为什么当我指出更高版本的NodeJS时,“npm install”不会失败?
我想强制在我的NodeJS项目中的NodeJS和NPM的确切版本。 这是我的package.json:
{ "name": "nodesandbox", "version": "0.0.1", "dependencies": { "less": "*" }, "engines": { "node": "0.10.25" } }
当我运行nvm ls
我得到这个输出:
v0.2.6 v0.7.12 v0.9.6 v0.10.12 v0.10.15 v0.10.21 current: v0.10.24
当我运行npm install
它工作正常,但我希望它失败。 我遵循这个链接[1]的指示,这就是为什么我认为在引擎对象中设置节点版本应该工作,但可悲的是它不工作。
[1] http://blog.nodejitsu.com/package-dependencies-done-right/#node-dependency-in-apps
它看起来像engine
依赖关系只在从其他位置获取包时才被检查:
[timwolla@/tmp/test2]npm install ../test npm WARN engine nodesandbox@0.0.1: wanted: {"node":"0.10.30"} (current: {"node":"v0.10.26","npm":"1.4.3"})
如果engineStrict
设置为true:
[timwolla@/tmp/test2]npm install ../test npm ERR! notsup Unsupported npm ERR! notsup Not compatible with your version of node/npm: nodesandbox@0.0.1 npm ERR! notsup Required: {"node":"0.10.30"} npm ERR! notsup Actual: {"npm":"1.4.3","node":"v0.10.26"}
如果仔细阅读本手册 ,可能会明白为什么(我实际上并不十分确定):
比较
npm install
(在软件包目录中,没有参数):在本地node_modules文件夹中安装依赖关系。
同
npm install <folder>
:安装位于文件系统文件夹中的软件包。
第一个安装依赖关系的状态,第二个安装程序包 。