"dev"true在package-lock.json文件中的含义是什么?

Mus*_* bw 20 npm package.json

"dev"true在package-lock.json文件中的含义是什么?

在我的情况下,当我执行npm操作时它会自动更新.

我们怎样才能删除它?

gor*_*nin 11

所以回答你的第一个问题,"dev": truepackage-lock.json手段这种依赖性不会被安装npm install/npm ci运行时production模式。

将依赖项仅用于本地开发环境标记为"dev": true,然后--production在您的 CI 中使用可能会为您节省一些构建时间。

从文档https://docs.npmjs.com/cli/install#description

默认情况下,npm install将安装所有列为依赖项的模块package.json

使用该--production标志(或当NODE_ENV环境变量设置为production),npm 将不会安装devDependencies.


小智 7

来自https://docs.npmjs.com/files/package-lock.json的 npm 文档

如果为真,那么这个依赖要么是顶层模块的开发依赖,要么是一个的传递依赖。对于既是顶级开发依赖又是顶级非开发依赖的传递依赖的依赖,这是错误的。

  • 我的`package-lock.json` 文件在不断变化。大多数情况下唯一的区别是包含或删除“dev: true”!鉴于其所谓的目的,我当然不会移动它和“devDependencies”之间的依赖关系,因此无法理解为什么我会看到这种变化。 (35认同)
  • 你能用简单的术语解释一下吗? (27认同)
  • 简化版本:如果包添加为 **dev**-dependency 并且也被 **dev**-dependency 中的其他包使用,则 `dev: true`。如果依赖项中的_至少一个_包需要该包 - npm 将其切换为“dev: false”。 (6认同)
  • @HankCa我遇到了同样的问题(不断添加和删除`“dev”:true`),问题的根源是因为有时软件包安装是通过`npm install --legacy-peer-deps`完成的,并且,在其他时刻,仅使用“npm install” (6认同)

Hou*_*eng 6

我认为这一段试图说明包依赖项的 dev: true 是如何分配的。

  • 直接开发依赖 -> dev: true
  • 只有间接开发依赖 -> dev: true
  • 直接开发依赖但是它也有间接的非开发依赖 -> 没有“dev: true”

换句话说,一旦开发依赖包被非开发包间接依赖,它应该是 dev:false ,因此它将被包含在构建过​​程中。此规则的目的是确保非开发包所需的包不会有“dev: true”。

此外,如果通过“npm install -D”安装,则该包将作为开发包安装,因此不会发生“dev: true”更改。但是,如果通过“npm install”安装,这可能会删除许多现有的依赖项“开发:真”属性。

例如,我在我的项目中运行“npm install -D bestzip”,结果是:

  • 53 个带有“dev”的依赖项:添加了 true

运行“npm install bestzip”,结果是:

  • 没有“dev”的 53 个依赖项:添加了 true
  • 43 个现有依赖项的 "dev": true 属性被删除