在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
)。