如何使用特定版本的 NPM?

Rac*_*Roy 5 node.js npm

如何切换我正在使用的 npm 版本?

目前:

$ npm -v
1.1.65
Run Code Online (Sandbox Code Playgroud)

但我需要:1.0.x

我试过了,但出现错误:

$npm version 1.0
npm ERR! version No package.json found
Run Code Online (Sandbox Code Playgroud)

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

Puz*_*ory 22

您可以更新 npm,而无需安装其他版本的 Node.js,并且 npm 并不专门与 Node.js 的版本绑定。

当然,随着 Node.js 的进步和添加功能,npm 也随之进步,因此 npm 存在一些限制,具体取决于 Node.js,但您应该尽可能多地更新 npm,因为有重要的安全补丁和错误修复。

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

该命令是npm install npm@latest -g全局安装它。这将安装将与您已安装的 Node.js 一起运行的最新版本。

此外,您可以将特定版本的 npm 安装到此类项目中的 package.json 中npm install npm@6.14,并且可以在本地使用它。更有趣的是,您可以在项目中安装本地版本的node.js并使用它!

示例:我正在运行节点 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
Run Code Online (Sandbox Code Playgroud)

这是什么价值?

这是一种将 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


ste*_*eel 5

您的 NPM 版本与您的 NodeJS 版本相关联。据我所知,每个 Node 版本只能有一个 NPM 版本。使用诸如nodeenv或我最喜欢的asdf 之类的东西,您可以为每个文件夹定义节点版本。

每个节点版本(例如每个文件夹)你全局安装你想要使用的 NPM 版本。

$ npm install -g npm@x.x
Run Code Online (Sandbox Code Playgroud)