繁体   English   中英

NPM具体版本如何使用?

[英]How to use a specific version of NPM?

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

现在:

$ npm -v
1.1.65

但我需要:1.0.x

我试过但出现错误:

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

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

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

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

$ npm install -g npm@x.x

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

npm install -g npm@5.6.0

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

npm -v
5.6.0

对于特定版本,请使用

npm install -g npm@xyz

对于最新版本,请使用

npm install -g npm@latest

您可以在不安装其他版本的 node.js 的情况下更新 npm,并且 npm 不会特别绑定到 node.js 的版本。

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

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

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

此外,您可以在npm install npm@6.14这样的项目中将特定版本的 npm 安装到 package.json 中,并且您可以在本地使用它。 更有趣的是,您可以在项目中安装本地版本的 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

这是什么价值?

这是您将 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

您可以通过以下命令安装特定版本。

npm install -g npm@6.14.11

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM