出于某种原因在 Windows 上运行 npm install
时它不会安装 devDependencies。 AFAIK 它应该。如果我运行 npm install --dev
devDependencies 已安装。我不明白为什么 npm install
也不安装 devDependencies,而只安装依赖项。可能是什么原因?我该如何解决?
也许我的 package.json 有问题?如果它可能有帮助,它会在下面列出:
{
"name": "try-brunch",
"version": "0.1.0",
"private": "true",
"devDependencies": {
"brunch": "^2.0.4",
"cssnano-brunch": "^1.1.5",
"javascript-brunch": "^1.8.0",
"sass-brunch": "^1.9.2",
"uglify-js-brunch": "^1.7.8"
},
"dependencies": {
"jquery": "^2.1.4"
}
}
devDependencies
实际上是模块开发人员的依赖项。我敢打赌我们大多数人npm install
使用一个模块,而不是开发它。
devDependencies
。使用它不需要 devDependencies
。因此,devDependencies
需要安装额外的标志是合理的。 如果 npm install
安装了 devDependencies
,默认情况下,用户也会得到多余的包。
npm i
时,它会抓取 py package.json
并安装 deps 和 devdeps。这是它的预期工作方式,而且很有意义(例如,当我在 git clone
之后执行 npm i
时,我希望拥有我需要的一切,包括例如 webpack 插件)。当实际行为与预期不同时,此问题解决了一个错误。请看一下文档 - docs.npmjs.com/cli/install。有一个不安装 devdeps 的标志,但默认行为是安装它们,这非常有意义并且是每个人都期望的
npm i
应该引导两者,这是预期的、理智的和记录在案的行为,所以我真的不明白你为什么说这个问题应该是一个标准
Using it does not require the devDependencies
- 我有点困惑。当我在 CI 或服务器上运行 npm i
时,我的应用程序需要例如 typescript、jest、webpack 以及要构建的任何 devdeps,所以我不知道这是关于哪个 using
查看 install 的 NPM 文档
使用 --production 标志(或者当 NODE_ENV 环境变量设置为 production 时),npm 将不会安装 devDependencies 中列出的模块。” --only={prod[uction]|dev[elopment]} 参数将只导致无论 NODE_ENV 为何,要安装 devDependencies 或仅安装非 devDependencies。”
你有没有尝试过
npm install --only=dev
如果您担心您的 package.json 可能不正确,最好这样做。创建一个新文件夹,然后运行:
npm init --yes
然后:
npm install --save-dev brunch@^2.0.4
npm install --save-dev cssnano-brunch@^1.1.5
npm install --save-dev javascript-brunch@^1.8.0
npm install --save-dev sass-brunch@^1.9.2
npm install --save-dev uglify-js-brunch@^1.7.8
npm install jquery@^2.1.4 --save
你应该很高兴去!否则,将继续发布其他选项。
检查你的 npm 配置:
npm config list
npm 从命令行、环境变量和 npmrc 文件中获取其配置设置。因此,请检查环境变量和 npmrc 文件。
还是失败?
好的,创建一个新文件夹,最好是在文件系统的其他位置。 IE。不在同一文件夹层次结构中。例如,C:\myNewFolder - 越靠近基本 C: 驱动器越好。
然后运行:
npm init --yes
现在运行:
npm install underscore --save
最后:
npm install mocha --save-dev
一切都按预期工作吗?
我要做的是了解您的问题是全局性的,还是先前文件夹和依赖项的本地问题。
检查 npm config 生产值是否设置为 true。如果此值为 true,它将跳过开发依赖项。
运行 npm config get production
设置它:npm config set -g production false
true
而不是 false
?
确保您没有将环境变量 NODE_ENV
设置为“生产”。
如果您这样做,则不会在没有 --dev
标志的情况下安装开发依赖项
npm install --dev
递归地 安装 devDependencies。这几乎不是您想要的,实际上是 deprecated。
--dev
选项。改用 --only=dev
npm install --include dev
成功了@MaxCoplan
--dev
选项。请改用 --also=dev
。
--include=dev
对于外面的人来说可能是一个有用的标志。
我有一个来自旧版本 package.json 的 package-lock.json
文件,我删除了它,然后正确安装了所有内容。
您可以将安装依赖项的简写方式仅用于开发,如下所示:
npm i -D <dependencies-names>
我有一个类似的问题。 npm install --only=dev
无效,npm rebuild
也无效。最终,我不得不删除 node_modules
和 package-lock.json
并再次运行 npm install
。那为我修好了。
我有同样的问题,因为我在构建 Docker 时设置了 NODE_ENV=production
。然后我再添加一个npm install --only=dev
。一切正常。我需要 devDependencies 来构建 TypeSciprt 模块
RUN npm install
RUN npm install --only=dev
确保您的 package.json
有效...
我有以下错误...
npm WARN Invalid name: "blah blah blah"
同样,这导致 devDependencies
未安装。
仅供参考,将 package.json
“名称”更改为 blah-blah-blah
已修复。
所以我解决这个问题的方法是在我通常运行 npm install
或 npm ci
的命令中,我添加了 NODE_ENV=build
,然后在命令之后添加了 NODE_ENV=production
,所以我的整个命令出来了:
RUN NODE_ENV=build && npm ci && NODE_ENV=production
到目前为止,我没有任何不良反应,并且用于构建应用程序的开发依赖项都可以正常工作/加载。
我发现这比添加像 npm install --only=dev
这样的附加命令更好,因为它花费的时间更少,并且使我能够使用 npm ci
命令,该命令速度更快,并且专门设计用于在 CI 工具/构建脚本中运行。 (有关详细信息,请参阅 npi-ci 文档)
运行 npm-check-updates -u
后出现类似错误。通过删除 node_modules
文件夹和 package-lock.json
解决了这个问题。之后,一个新的 npm install
一切正常。
我的例外:
无法加载在“package.json » eslint-config-react-app#overrides[0]”中声明的解析器“@typescript-eslint/parser”:找不到模块“@typescript-eslint/parser”
就我而言,问题在于我在运行 npm install
的同一终端会话中将 NODE_ENV
变量设置为生产。
为了使我的构建能够正常运行,我不允许更改 NODE_ENV
的值,所以我通过向它添加 --production=false
标志来强制 npm 安装所有依赖项:npm install --production=false
as mentioned in the docs。
如果您不需要将 NODE_ENV
设置为 production
,您只需在终端中键入 export NODE_ENV=development
即可覆盖其值并再次运行 npm install
。
到目前为止,您可以使用:
npm i --also=dev
正如@Ale 所说,我们可以现在使用 npm i -D <some_module_name>
或 npm i --save-dev <some_module_name>
。似乎命令在节点版本的某个点发生了更改。官方 (npm dependencies and devDependencies) 说如下。
当您添加 -D 标志或 --save-dev 时,您将其安装为开发依赖项,这会将其添加到 devDependencies 列表中。
不定期副业成功案例分享
npm install && npm install --only=dev
谢谢!only
选项已被弃用,您可以使用更适合您的omit
或include
。