在npm忽略devDependencies?

我是两个npm模块的作者,都有devDependencies。 第一个是simpleDbLayer。 安装它:

npm install simpledblayer 

下载的package.js文件具有与git仓库中的内容匹配的devDependencies:

 //... "devDependencies": { "simpleschema": "0.3.x" }, //... 

不幸的是, nodeunit test.js会失败,因为simpleschema没有安装(因为它应该是)。 从手册:

默认情况下,npm install会安装列为依赖关系的所有模块。 使用–production标志,npm将不会安装在devDependencies中列出的模块

即使更奇怪(这是我最受影响的真正奇怪的问题)是我的另一个模块,simpledblayer-mongo:

 npm install simpledblayer-mongo 

在他安装package.js文件,我有:

 "devDependencies": {}, 

这与实际发布的内容不符, 其中包含 :

 "devDependencies": { "simpleschema": "0.3.x", "simpleschema-mongo": "0.3.x" }, 

不用说simpleschema和simpleschema-mongo没有安装。

我错过了什么吗?

是的,默认情况下,它将安装devDependencies,但仅用于您的项目(您的package.json devDependencies),而不是npm存储库中的模块。

如果你想要你的依赖关系的devDependencies,可以通过传递--dev到npm命令来强制它:

 npm install simpledblayer --dev 

另外,当你将环境variablesNODE_ENV设置为生产时,它不会安装devDependencies(甚至不包括你的package.json )。