提问者:小点点

如何使用特定版本的NPM?


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

目前:

$ npm -v
1.1.65

但是我需要:1.0.x

我尝试了,但出现了一个错误:

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

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


共3个答案

匿名用户

您的NPM版本与NodeJS版本绑定。据我所知,每个节点版本只能有一个NPM版本。使用nodenv或我最喜欢的asdf之类的工具,可以定义每个文件夹的节点版本。

按节点版本(例如,按文件夹)全局安装要使用的NPM版本。

$ npm install -g npm@x.x

编辑:您现在还可以在package.json“engines”键中指定NPM版本,尽管强制执行该声明需要更多的工作。

匿名用户

您可以在不安装其他版本的 node 的情况下更新 npm.js并且 npm 与 node 的版本无关.js特别是。

当然,随着node.js的进步和功能的增加,npm也会随之增加,因此npm会受到一些限制,具体取决于node.js,但您应该尽可能地更新npm,因为有重要的安全补丁和bug修复。

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

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

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

示例:我正在运行节点 16.8.0,我有 npm 7.21.0,但我想使用 npm 的早期版本,但仅用于项目:

在项目目录中

< code > NPM I-save-dev NPM @ 6.14

这将把早期版本的npm放入node_modules/. bin中,这将允许您运行与此项目相关的npm。如果此时输入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 devnode@lts然后将此版本的node.js添加到项目中。

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

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

您可以通过在package.json.scripts中创建一个脚本来测试这一点:“what:version”:“npm-v

然后,如果你运行npm运行什么:版本,你会得到

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

6.14.15
v14.17.3

这是什么价值?

这是一种将node和npm与项目打包的方法。这对于大型项目尤其有用,因为您有许多人在同一个项目上工作,因此您具有全面一致性,或者如果您的构建服务器具有特定版本的节点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

匿名用户

当您安装npm时,您只会得到最新的软件包,因此您需要单独安装特定版本,例如:

npm install -g npm@5.6.0

完成后,运行版本检查,您应该会看到刚刚安装的版本:

npm -v
5.6.0