为什么当我指出更高版本的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>

安装位于文件系统文件夹中的软件包。

第一个安装依赖关系的状态,第二个安装程序包