Npm 意外删除了通过 'ng add' 安装的包

Npm accidentally deletes packages installed via 'ng add'

在节点 13.10.1 上测试

我正在通过 ng add 命令安装一些 Angular 库+原理图(由我编写)。这些库会添加到 package.json 但不会添加到 package-lock.json。 当我尝试为我的项目提供服务时,我收到了一条关于库 peerDependecies 不满意的错误消息。

  1. 我运行npm i <missingpackages...>
  2. 我运行ng serve

然后我得到一个新的错误,我之前安装的 Angular 库现在消失了。只剩下他们的范围文件夹 (@my-corp)

  1. 然后我再运行npm i <libraries...>,
  2. 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

希望对您有所帮助