【问题标题】:How to install a previous exact version of a NPM package?如何安装以前精确版本的 NPM 包?
【发布时间】:2013-03-31 05:38:14
【问题描述】:

我使用 nvm 下载 node v0.4.10 并安装 npm 以使用该版本的 node。

我正在尝试使用

安装 express
npm install express -g

我收到一个错误,表示需要节点版本 >= 0.5.0。

嗯,这很奇怪,因为我正在遵循使用节点 v0.4.10 的 node+express+mongodb 教程here 的指示,所以我假设 express 对节点 v0.4.10 可用。如果我的假设是正确的,我如何告诉 npm 获取适用于我的设置的版本?

【问题讨论】:

  • 你为什么不更新你的 Node 版本呢?很确定应该有更多好的补充,而不是你会发现的破坏行为。
  • 有时这不是一个选项。如果他使用nvm降级,可能是有原因的,比如某个其他组控制了他必须使用的可执行节点版本。

标签: node.js npm


【解决方案1】:

如果您必须安装旧版本的软件包,只需指定它

npm install <package>@<version>

例如:npm install express@3.0.0

您还可以将 --save 标志添加到该命令以将其添加到您的 package.json 依赖项中,或者如果您希望在您的 package.json 依赖项中指定确切的版本,则添加 --save --save-exact 标志。

install 命令记录在此处:https://docs.npmjs.com/cli/install

如果您不确定可用的软件包版本,您可以使用:

npm view <package> versions

并且npm view 也可以用于查看有关包的其他内容。 https://docs.npmjs.com/cli/view

【讨论】:

  • 我相信这会安装最接近的匹配的主要版本,所以它可能不是你所期望的stackoverflow.com/a/22345808/1074400
  • @AakilFernandes 如果您指定一个确切的版本,将安装一个确切的版本。如果您指定语义版本范围,那么您可能会得到不完全匹配的结果。 install 命令在这方面没有什么独特之处。
  • npm view &lt;package&gt; versions -json 查看每个版本,避免在包含多个版本的列表末尾出现省略号。
  • 如果您使用npm install express@3.0.0,您将无法获得确切的 3.0.0 版本,您将获得最新的 3.x.x 版本。要获取特定版本,您必须使用npm install express@3.0.0 --save-exact。请参阅此博客文章:60devs.com/npm-install-specific-version.html
  • @PatrickHund 不,npm install express@3.0.0 将为您提供完全 3.0.0 版。 npm install express@^3.0.0 将为您提供最新的 3.x.x。 --save-exact 会影响它写入 packages.json 的方式,我已经在我的回答中介绍了这一点。另请注意,--save-exact 必须与 --save--save-dev 结合使用 - 单独使用是不够的。
【解决方案2】:

首先删除旧版本,然后运行字面意思如下:

npm install express@3.X

npm install express@4.X

对于稳定的或最近的

npm install -g npm@latest    // For the last stable version
npm install -g npm@next      // For the most recent release

【讨论】:

  • 这是文字 X 还是某个数字版本号的替代?
  • 这是一个非此即彼的问题,而不是一个是/否的问题。我试过npm install express@3.X,它似乎工作。这是npm 解析版本号的方式的特性还是意外?
  • @KeithThompson 是的,是的!呵呵,开个玩笑……这是npm解析的方式,见:docs.npmjs.com/misc/semver#x-ranges-12x-1x-12-
  • @gonz:所以这是一个字面意思X
  • 我只是想说明为什么这对你有用。我不知道 Saurabh 的初衷,也不知道你想要做什么。 3.X 表示 >= 3.0 和
【解决方案3】:

在我看来这是最简单和最快的方法:

$ npm -v

4.2.0

$ npm install -g npm@latest-3

...

$ npm -v

3.10.10

【讨论】:

    【解决方案4】:

    这很容易。就这样写吧,例如:

    npm install -g npm@4.6.1
    

    或者:

    npm install -g npm@latest    // For the last stable version
    npm install -g npm@next      // For the most recent release
    

    【讨论】:

    • 感谢latestnext 版本标签!
    • @inaps 你可能添加一个注释,-g 标志专门用于你想要全局安装的包,因为很多用户会进入这个页面并且只是复制/在没有意识到他们将如何影响他们的包生态系统的情况下粘贴。我们都是“那个人”
    • 这将在本地安装确切的版本,但会将 '^4.6.1' 放在 package.json 中,这意味着其他开发人员或构建工具可能会获得另一个可能不是您想要的颠覆并导致构建失败。
    【解决方案5】:

    在 Ubuntu 上你可以试试这个命令。

    sudo npm cache clean -f
    sudo npm install -g n
    sudo n stable 
    

    具体版本:sudo n 8.11.3 代替 sudo n stable

    【讨论】:

      【解决方案6】:

      npm install -g npm@version

      你要降级的地方

      npm install -g npm@3.10.10

      【讨论】:

      • 但是如果我在本地需要它?我需要放--save吗?
      • 是的,你也有..它会在本地下载包。
      • @AlexNikonov 省略-g(对于全局安装,然后它会位于您当前的项目目录/node_modules),是的,--save--save-dev 以获取package.json 中的条目
      【解决方案7】:

      您可以使用以下命令更新您的 npm 包:

      npm install &lt;package_name&gt;@&lt;version_number&gt;

      示例: npm install yargs@12.02

      【讨论】:

        【解决方案8】:

        您可以使用以下命令安装以前版本的 npm 包:

        npm install packagename@version
        

        【讨论】:

          【解决方案9】:

          我有一个解决此类问题的通用方法,这也可能会有所帮助,尤其是在克隆存储库以在本地运行它们时,但需要对版本进行更多分析。

          使用包npm-check-updates,我验证了未在其最新可用版本中声明的包的版本(根据package.json文件),如图所示(https://www.npmjs.com/package/npm-check-updates):

          有了这些信息,我们可以验证不同包的更新状态,并决定哪些包要升级/降级,哪些不。

          假设我们决定更新所有列出的包,我们可以使用ncu -u 命令,它只修改你的 package.json 文件。运行npm install 来更新你安装的包和package-lock.json。

          然后,根据存储库的要求,我们可以细化所需的内容,安装特定版本 npm view &lt;package&gt; versionsnpm install &lt;package&gt;@&lt;version&gt;

          【讨论】:

            【解决方案10】:

            对于纱线用户:

            yarn add package_name@version_number
            

            【讨论】:

              【解决方案11】:

              如果你使用的是mac,你总是可以使用nvm,如果你是windows,那么你可以使用nodist

              对于窗口:https://changelog.com/posts/nodist-node-version-manager-for-windows

              对于 Mac:https://github.com/nvm-sh/nvm

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2020-01-13
                • 2017-10-04
                • 2014-12-12
                • 2020-09-26
                • 1970-01-01
                • 2012-06-13
                相关资源
                最近更新 更多