Cli: [BUG] npm update --depth 打破依赖

创建于 2019-12-17  ·  4评论  ·  资料来源: npm/cli

什么为什么

NPM 在执行递归/深度更新后报告未满足的依赖项

什么时候


在哪里



  • 不适用

如何

当前行为

重现步骤

  1. 在本地创建一个文件夹并运行npm init
  2. 安装具有多个依赖级别的包,例如npm i -D @semantic-release/exec
  3. 等待他们的深层依赖之一获得更新的版本
  4. 运行npm --depth 9999 update

预期行为

  • 不应该有任何未满足的依赖项。 更新是根据其父级的package.json文件或其祖先的任何npm-shrinkwrap.json的。
  • 换句话说,它应该像没有package-lock.json并继续解析所有依赖项,根据需要安装/更新/删除,然后使用解析的树更新锁文件。

WHO



  • 不适用

参考



  • 不适用

最有用的评论

看起来我已经准备好了重复的问题

什么为什么

命令npm update --depth <number>会丢失dev: true以获取更新的 devDependencies 依赖项。

什么时候

  • 每当我将npm update --depth <number>用于没有新鲜 devDependencies 依赖项的包时

在哪里

  • npm 公共注册表

如何

当前行为

它失去了dev: true更新的 devDependencies 依赖项

重现步骤

  1. 拿这个回购https://github.com/pahan35/npm-bugs
  2. 结账分行loses-dev-for-dev-deps
  3. 运行npm i
  4. 运行npm update --depth 7

预期行为

我希望此操作应为更新的 devDependencies 依赖项保留dev: true

参考

可能与#944有关

所有4条评论

看起来我已经准备好了重复的问题

什么为什么

命令npm update --depth <number>会丢失dev: true以获取更新的 devDependencies 依赖项。

什么时候

  • 每当我将npm update --depth <number>用于没有新鲜 devDependencies 依赖项的包时

在哪里

  • npm 公共注册表

如何

当前行为

它失去了dev: true更新的 devDependencies 依赖项

重现步骤

  1. 拿这个回购https://github.com/pahan35/npm-bugs
  2. 结账分行loses-dev-for-dev-deps
  3. 运行npm i
  4. 运行npm update --depth 7

预期行为

我希望此操作应为更新的 devDependencies 依赖项保留dev: true

参考

可能与#944有关

--depth大于 0 时,我还遇到npm update忘记了依赖项的dev标志。对于较低的深度,也许没有必要?

我发现重新安装节点模块后恢复了 dev 标志( rm -rf node_modules; npm install

我看到在使用npm update --depth后丢失dev标志的相同问题,但仅适用于我的项目的开发依赖项,这些依赖项是其他依赖项的真正依赖项。

在我的情况下,其他依赖项将“@types/node”添加为依赖项,但在我的项目中将其作为开发依赖项:

依赖项“a”的 package.json:

{
  name: "a",
  dependencies: {
    "@types/node": ">=5.10"
  }
}

我的项目:

{
  dependencies: {
    "a": "1.0.0"
  },

  devDependencies: {
    "@types/node": "^12.0.0",
    "somethingElse": "1.0.0"
  }
}

npm update --depth=99 ,开发标志对于somethingElse但对于@type/node是错误的

编辑: npm install似乎将@types/node为根的 dev 依赖项 + 作为组件“a”中嵌套 node_module 的依赖项。
npm update仅在根目录下作为依赖项安装一次

此页面是否有帮助?
0 / 5 - 0 等级