如何使用特定版本的NPM?

43
我该如何切换正在使用的npm版本?
目前的版本是:
$ npm -v
1.1.65

但我需要的是:1.0.x

我尝试了但出现了错误:

$npm version 1.0
npm ERR! version No package.json found

有人知道如何使用不同版本的NPM吗?谢谢


安装旧版本。https://github.com/isaacs/npm - Brad
@Brad,你不能像在rpm中那样切换版本吗?这正是我所需要的。 - Rachel D Roy
您可以通过安装另一个版本来切换版本。为什么这个解决方案不可行?您想要做什么? - Brad
你尝试过执行 npm install npm@1.0.x 吗? - Shawn
5个回答

53

1
8.1.0 也有这个问题。6 可以用。谢谢! - MartianMartian

22

你可以更新 npm 版本而不必安装另一个 node.js 版本,因为 npm 不与特定的 node.js 版本绑定。

当然,随着 node.js 的发展和增加功能,npm 也会有所限制,但您应该尽可能地更新 npm,因为有重要的安全补丁和错误修复。

这是所有软件的最佳实践。稳定性不值得忽视安全风险。

命令是npm install npm@latest -g以全局方式安装它。 这将安装最新版本,可与您已安装的 node.js 运行。

此外,您可以像这样向项目的 package.json 安装特定版本的 npm:npm install npm@6.14,然后在本地使用它。更有趣的是,您可以在项目中安装本地版本的 node.js 并使用它!

例如:我正在运行 node 16.8.0 并且我有 npm 7.21.0,但我想仅为一个项目使用早期版本的 npm:

在项目目录中

npm i --save-dev npm@6.14

这将把早期版本的 npm 放入 node_modules/.bin 中,从而让您可以相对于此项目运行它。此时,如果键入 npm -v,您将获得全局版本。

如果键入 node_modules/.bin/npm -v,则会显示 6.14.15。

由于您已将此版本的 npm 设置为此项目的版本,因此在脚本中使用 npm 时将使用 6.14.15 而不是全局版本。

node.js 也是如此。

您可以像这样安装较旧的 node.js 版本:node_modules/.bin/npm install --save-dev node@lts,然后将此 node.js 版本添加到项目中。

您可以通过输入node_modules/.bin/node -v进行测试,在我的示例中,您将看到本地安装版本号,例如 v14.17.3,尽管我的全局版本是 v16.8.0。

如果这样做,您的 package.json 脚本中的项目脚本将运行本地安装的版本,而不是全局版本。

您可以在 package.json.scripts 中创建一个脚本进行测试,例如:"what:version": "npm -v && node -v"

然后如果您运行 npm run what:version,则会获得

> what:version
> npm -v && node -v

6.14.15
v14.17.3

这是什么价值?

这是一种将 node 和 npm 与您的项目打包在一起的方式。对于大型项目有许多人共同开发的情况,这可以特别有价值,因此您可以在所有人之间保持一致,或者如果您有一个构建服务器,它具有特定版本的 node + npm,则也很有用。此外,如果您有企业要求等。

此外,还有 npx,可以让您做更多的事情。使用 npx,您甚至可以尝试某些内容而无需安装它。

这里是 npm 的文档:https://docs.npmjs.com/about-npm-versions

如果发现您需要在不同的 node.js 和 npm 版本之间切换,您可能需要使用 nvm:https://docs.npmjs.com/downloading-and-installing-node-js-and-npm


1
这是最准确的答案。谢谢分享! - Nicolas Forney

4
您可以通过以下命令安装特定版本。
npm install -g npm@6.14.11

3
当您安装npm时,只能获取最新的软件包,因此您需要单独安装特定版本,例如:
npm install -g npm@5.6.0

完成以上步骤后,运行版本检查,您应该能够看到刚刚安装的版本:

npm -v
5.6.0

1

对于特定版本,请使用

npm install -g npm@x.y.z

而对于最新版本,请使用

npm install -g npm@latest


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接