npm
使用package.json
中定义的npm
吗?
$ npm --version
4.5.0
包.json
...
"dependencies": {
...
"npm": "4.3.0"
}
是和否
当你运行npm install
时,你不会使用该版本的 npm,但无论你在PATH
中首先拥有什么版本,它都会在你的node_modules
目录中安装那个指定版本的 npm。
现在,由于 npm 在运行 npm 脚本(如npm test
或npm start
或npm run whatever
等)时会向 PATH 添加node_modules/.bin
,如果您碰巧在脚本中使用npm,它将使用特定版本的 npm。
例如,如果您有:
"start": "npm run execute",
"execute": "node app.js",
在package.json
中,然后当您运行时:
npm start
您通常的 npm 将用于此目的,但它将为npm run execute
运行特定已安装的 npm,而该 npm 又将运行node app.js
。
例
如果你有这个包.json:
{
"name": "npm-install-test",
"version": "1.0.0",
"description": "",
"scripts": {
"npm-v": "npm -v"
},
"dependencies": {
"npm": "^4.3.0"
}
}
在运行npm install
之前,您运行
$ npm -v
你会得到:
4.2.0
当您运行时:
$ npm run npm-v
你会得到:
> npm-install-test@1.0.0 npm-v /home/rsp/node/test/npm-install-test
> npm -v
4.2.0
现在,在运行npm install
运行时
$ npm -v
您仍然可以获得:
4.2.0
但是当你运行时:
$ npm run npm-v
您现在可以获得:
> npm-install-test@1.0.0 npm-v /home/rsp/node/test/npm-install-test
> npm -v
4.3.0
当然,您的版本可能会有所不同。我只是碰巧在进行这些测试时安装了 npm 4.2.0。如果您安装了4.3.0,那么您当然不会看到效果。