如何为项目指定Node的本地版本?
我有一个项目,我们正在尝试建立Node并使其在多个开发人员的机器上运行。问题在于,并非所有开发人员都是Node(甚至JavaScript)开发人员,我们要确保他们具有运行特定项目所需的Node版本(开发人员在其计算机上将有多个Node项目)。
我了解了package.json的“ engines”字段,但似乎找不到任何方法来安装所需的Node版本。为了进行测试,我通过NVM将当前节点版本设置为v0.10.29,创建了一个package.json并指定了v0.11.13的必要引擎,并尝试通过node
命令以及package.json-启动Node。定义的npm start
命令。
blackjack:node-engines-test sent1nel$ node -v
v0.10.29
blackjack:node-engines-test sent1nel$ cat package.json
{
"name": "node-engines-test",
"version": "0.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"engineStrict": true,
"engines": {
"node": "v0.11.13"
},
"start": "node index.js",
"author": "",
"license": "ISC"
}
blackjack:node-engines-test sent1nel$ cat index.js
console.log('Version: ' + process.version);
blackjack:node-engines-test sent1nel$ node index.js
Version: v0.10.29
blackjack:node-engines-test sent1nel$ npm start
blackjack:node-engines-test sent1nel$
npm install似乎也不在乎节点引擎版本。
blackjack:node-engines-test sent1nel$ npm install
npm WARN package.json [email protected] No description
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No README data
blackjack:node-engines-test sent1nel$ node -v
v0.10.29
什么给了?!
回答如下:我相信engines和engineStrict适用于通过npm安装软件包的情况,而不是当您试图通过node来执行某些操作时的情况。这些选项警告/阻止用户安装并非旨在与其当前使用的节点版本兼容(或兼容)的软件包。
我对此问题有两种解决方案....