npm安装未拉取devDependencies

15

我有npm v1.2.32。

当我运行: $ npm install mongo-migrate

它没有安装mongodb,这是一个devDependency。

我做错了什么?


5个回答

85

虽然与这个问题没有直接关联,但有些人可能会感兴趣的是,如果环境变量NODE_ENV被设置为production,当执行npm install时,npm将忽略devDependencies


这让我省去了另外几个小时比较两个开发环境之间的差异。在找到这个答案之前,我已经逐行比较了 npm config ls -l。谢谢! - bantic
npm文档实际上包含了这个注释(https://github.com/npm/npm/commit/95e59b287c9517780318e145371a859e8ebb2d20),但他们在线的文档还没有更新到那个信息。 - bantic
点赞,有没有一种方法可以强制npm install在生产环境中安装devDependencies?还是我应该将构建目录添加到我的git存储库中? - Dimitri Kopriwa
我在Windows上工作,必须全局设置我的NODE_ENV为生产环境。这个答案真的帮了我很多。 - Bas G
6
我应该将NODE_ENV的值设为什么以安装devDependencies? - shenkwen

19
当你从NPM库安装一个包时,开发依赖不会自动安装(因为这些依赖项不应该对主要的包正常工作造成影响)。
你需要明确地告诉npm也安装开发依赖:
npm install mongo-migrate --dev

更新

--dev 命令已被弃用。

npm 警告:使用 --dev 选项已被弃用。请使用 --only=dev 替代。

npm install mongo-migrate --only=dev

1
这是一个糟糕的答案。该命令递归安装 devDepend,因此大多数情况下无法使用。 - Yin
2
@Jake,这个答案已经超过2年了。你可以自己创建一个新的答案。 - robertklep

2

npm i <package> # 不包括 devDependencies cd node_modules/<package> npm i # 包括 devDependencies

不要使用"npm i --dev",因为它会递归安装 devDependencies。


1
我曾经遇到过同样的问题,原因是我的package.json文件中定义了两次devDependencies。我手动输入时拼写错误,在疑难解答期间运行了一些--save-dev安装命令,导致它出现了两次。顺便说一下,如果你在package.json中两次包含"devDependencies",npm将不会安装它们。

0

即使设置了NODE_ENV=production,我有时仍需要安装devDependencies。

我通常使用这个解决方法。

// temporarily change NODE_ENV to other value...
NODE_ENV=development npm install

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接