Npm 意外删除了通过 'ng add' 安装的包
Npm accidentally deletes packages installed via 'ng add'
在节点 13.10.1 上测试
我正在通过 ng add
命令安装一些 Angular 库+原理图(由我编写)。这些库会添加到 package.json
但不会添加到 package-lock.json
。
当我尝试为我的项目提供服务时,我收到了一条关于库 peerDependecies
不满意的错误消息。
- 我运行
npm i <missingpackages...>
- 我运行
ng serve
然后我得到一个新的错误,我之前安装的 Angular 库现在消失了。只剩下他们的范围文件夹 (@my-corp)
- 然后我再运行
npm i <libraries...>
,
ng-serve
并且一切正常(库也已添加到 package-lock.json
)。
谁能给我解释一下这种奇怪的行为?
我找到了解决办法。
问题的核心是在 ng add <library>
命令 运行 之后 package-lock.json
中缺少更新。
如果您是 angular-library 开发人员,要解决此问题,只需在规则工厂函数内部执行以下代码:
export function ngAdd(options: ISchema): Rule {
exec('npm i --package-lock-only'); // <- this code
return (host: Tree, context: SchematicContext) => {...};
}
如果您只是消费者,运行 来自 cli
npm i --package-lock-only
希望对您有所帮助
在节点 13.10.1 上测试
我正在通过 ng add
命令安装一些 Angular 库+原理图(由我编写)。这些库会添加到 package.json
但不会添加到 package-lock.json
。
当我尝试为我的项目提供服务时,我收到了一条关于库 peerDependecies
不满意的错误消息。
- 我运行
npm i <missingpackages...>
- 我运行
ng serve
然后我得到一个新的错误,我之前安装的 Angular 库现在消失了。只剩下他们的范围文件夹 (@my-corp)
- 然后我再运行
npm i <libraries...>
, ng-serve
并且一切正常(库也已添加到 package-lock.json
)。
谁能给我解释一下这种奇怪的行为?
我找到了解决办法。
问题的核心是在 ng add <library>
命令 运行 之后 package-lock.json
中缺少更新。
如果您是 angular-library 开发人员,要解决此问题,只需在规则工厂函数内部执行以下代码:
export function ngAdd(options: ISchema): Rule {
exec('npm i --package-lock-only'); // <- this code
return (host: Tree, context: SchematicContext) => {...};
}
如果您只是消费者,运行 来自 cli
npm i --package-lock-only
希望对您有所帮助