npm 是否使用 package.json 中定义的 npm?



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 testnpm startnpm 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,那么您当然不会看到效果。

最新更新