目前的版本是:
$ npm -v
1.1.65
但我需要的是:1.0.x
我尝试了但出现了错误:
$npm version 1.0
npm ERR! version No package.json found
有人知道如何使用不同版本的NPM吗?谢谢
你的NPM版本与NodeJS版本相关联。据我所知,每个Node版本只能有一个NPM版本。使用类似nodenv或者我最喜欢的asdf,你可以为每个文件夹定义自己的node版本。
对于每个Node版本(例如每个文件夹),你可以全局安装想要使用的NPM版本。
$ npm install -g npm@x.x
编辑:现在您还可以在package.json的“engines”键中指定NPM版本,尽管需要更多工作来强制执行该声明。
你可以更新 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
npm install -g npm@5.6.0
完成以上步骤后,运行版本检查,您应该能够看到刚刚安装的版本:
npm -v
5.6.0
对于特定版本,请使用
npm install -g npm@x.y.z
而对于最新版本,请使用
npm install -g npm@latest
npm install npm@1.0.x
吗? - Shawn