npm install不会安装devDependencies


256

由于某些原因在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"
  }
}

5
为什么我们甚至需要对其进行修复?它应该是默认值!devDependencies实际上是模块开发人员的依赖项。我敢打赌我们大多数人都会npm install使用一个模块,而不是开发它。
КонстантинВан

假设您编写了一个应用,并且需要一个记录器或Webpack插件。那些是devdeps。那些需要安装。在某些情况下,npm不会安装那些。
Tristan Tzara '18

1
我的意思devDependencies是,仅当您编写软件包(应用程序)时才需要进行安装。使用它不需要devDependencies。因此,需要安装额外的标志是合理的devDependencies如果默认npm install安装,则用户还将获得冗余软件包。devDependencies
КонстантинВан

记录的行为是,当我npm i在文件夹中执行操作时,它将抓取py package.json并安装deps和devdeps。这就是它的预期工作方式,并且很有道理(例如,当我期望拥有所需的一切(包括webpack插件)npm i后才这样做git clone)。当实际行为与预期不同时,此问题解决了一个错误。请看一下docs-docs.npmjs.com/cli/install。有不安装devdeps一个标志,但是默认行为是安装它们,这是非常合情合理的,并是每个人都希望
特里斯坦查拉

我看不出任何理智的理由让我记得每次我拉时都要运行另一个命令来安装例如webpack插件或Typescript类型defs或任何其他devdeps。npm i 应该同时引导这两种行为,这既是故意的,理智的又是有据可查的行为,因此,老实说,我不明白您为什么说这个问题应该是一个标准
Tristan Tzara

Answers:


305

检查NPM文档以进行安装

使用该--production标志(或将NODE_ENV环境变量设置为生产时),npm将不会安装devDependencies中列出的模块。”

--only={prod[uction]|dev[elopment]}参数将导致仅安装devDependencies或仅安装非devDependencies,而与NODE_ENV无关。”

你有没有尝试过

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文件。

还是失败了?

好的,创建一个新文件夹,最好是在文件系统上的其他位置。即。不在同一文件夹层次结构中。例如,C:\ myNewFolder-越靠近基本C:驱动器越好。

然后运行:

npm init --yes

现在运行:

npm install underscore --save

最后:

npm install mocha --save-dev

一切都按预期工作吗?

我正在尝试做的是了解您的问题是全局的,还是先前文件夹和依赖项的局部问题。


特里斯坦-这对您的情况有帮助吗?请您将答案标记为正确,否则让我知道尝试以上方法的结果?
arcseldon'1

2
npm install --only = dev安装devdeps,但我想同时安装deps和devdeps。package.json似乎还可以,因为重新创建它不会改变任何内容。我是否对NODE_ENV既存在于全球(作为默认值)又在本地(作为项目的值)存在?我在哪里可以在Windows上检查和更改这些值(我看过但没有系统变量NODE_ENV)
Tristan Tzara

@TristanTzara-这些天我几乎专门从事MAC工作。但是,从过去的回忆中(几年前在NT和XP上)-您可以在命令提示符窗口中键入“ set”之类的东西吗。否则转到诸如System Properties-> Advanced-> Environment Variables并在此处检查您的输入。您正在使用NODE_ENV寻找“钥匙”。现在,我将在Google上搜索Windows选项,但会发布它以防万一。
arcseldon'1


@TristanTzara-很高兴知道。一想到,请检查目录上所有无效的父目录。查找现有的node_modules文件夹... npm在尝试解决依赖项时将向上搜索,这可能有点奇怪,就像它在目录树中进一步获取现有已安装的模块一样,因此拒绝将其安装在子文件夹中。通常的位置就在您的主目录下。.祝您好运,并感谢您答谢我的回答:D
arcseldon

85

检查npm config生产值是否设置为true。如果此值为true,它将跳过dev依赖项。

npm config get production

要设置它: npm config set -g production false


我想知道是否在npm 5.x和npm 6.x之间的某个位置未设置任何值,则默认值变为true而不是false
James Perih

38

确保您没有将env变量NODE_ENV设置为“ production”。

如果这样做,没有--dev标记将不会安装dev依赖项


我看了一下我的系统变量,甚至没有这个变量。也许我看错地方了?
Tristan Tzara

13
请注意,递归npm install --dev安装devDependencies 。这几乎从来不是您想要的,实际上弃用
万原

谢谢。我不知道这会影响常规的npm安装,但这是逻辑。:)
Lothre17年

6
不建议使用该--dev选项。使用--only=dev替代
萨拉特·阿克

16

我有一个package-lock.json来自旧版本package.json 的文件,我删除了该文件,然后正确安装了所有文件。


答对了!那解决了我的问题。看起来我们应该已经将它提交到了仓库中。
randomor

9

我有一个类似的问题。 npm install --only=dev没有用,也没有用npm rebuild。最终,我不得不删除node_modules并重新package-lock.json运行npm install。这为我解决了。


7

可以将简短的安装依赖关系方式仅用于开发,如下所示:

npm i -D <dependencies-names>

最佳答案。应该在顶部
wwwwwwwwwwww

6

确保您package.json的有效...

我有以下错误...

npm WARN Invalid name: "blah blah blah"

同样,导致devDependencies未安装。

仅供参考,将package.json“名称” 更改为blah-blah-blah固定的名称。


0

我有同样的问题,因为我NODE_ENV=production在构建Docker时设置了时间。然后我再加一个npm install --only=dev。一切正常。我需要devDependencies来构建TypeSciprt模块

RUN npm install
RUN npm install --only=dev
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.