【问题标题】:How to update specific sub-package version by using npm如何使用 npm 更新特定的子包版本
【发布时间】:2019-03-28 17:43:52
【问题描述】:

我已经检查了 gulp 的全局包 minimatch

$ npm list -g minimatch

+-- gulp@3.9.1
| `-- vinyl-fs@0.3.14
|   +-- glob-stream@3.1.18
|   | +-- glob@4.5.3
|   | | `-- minimatch@2.0.10  deduped
|   | `-- minimatch@2.0.10
|   `-- glob-watcher@0.0.6
|     `-- gaze@0.5.2
|       `-- globule@0.1.0
|         +-- glob@3.1.21
|         | `-- minimatch@0.2.14  deduped
|         `-- minimatch@0.2.14

现在,我想将特定 gulp 包中的所有 minimatch 版本(所有 minimatch@0.2.14 和 minimatch@3.04)更新到最新版本。

他们在 npm 中是否有任何命令可以更新我现有的包依赖项?

【问题讨论】:

    标签: javascript node.js npm gulp minimatch


    【解决方案1】:

    您不能也不应该更新子包(用作其他包的依赖项的包)。

    节点模块被设计为包含node_modules 中指定版本的所有依赖项,以避免新更新出现问题。假设您的minimatch@3.0.4 引入了一些新功能,现在glob@4.5.3 可能停止工作,反过来gulp@3.9.1 也可能停止工作。

    您应该:

    更新到新的gulp 版本,无需担心minimatch

    npm update gulp
    

    或者直接使用最新版本的minimatch,使用

    npm install minimatch
    

    如果您真的出于某种原因想要执行该操作,您可以尝试以下丑陋的 hack:

    • npm install minimatch@3.0.4在随机位置安装minimatch
    • 转到此位置的node_modules 文件夹并复制minimatch 文件夹
    • 找到您的 gulp 安装文件夹(这可能取决于您的系统,Windows 上为 C:\Users\user\AppData\Roaming\npm\node_modules\gulp 或 Linux 上为 /usr/lib/node_modules/gulp/
    • gulp 安装文件夹中搜索minimatch (find . | grep minimatch)
    • 将所有找到的minimatch 文件夹替换为您刚刚安装在随机位置的文件夹

    此时gulp 应该使用更新后的minimatch,尽管npm list 仍会显示旧版本号。
    同样,强烈不建议这样做,仅出于回答问题的目的提供。

    【讨论】:

    • 我知道,但问题是我想更新我的本地全局包之一。我不在乎这是否会破坏它,我该怎么做?
    【解决方案2】:

    这是我的解决方案,您可以使用为 minimatch 包创建符号链接

    npm ln
    npm link (in package dir)
    npm link [<@scope>/]<pkg>[@<version>]
    

    这里是更多解释的链接https://docs.npmjs.com/cli/link

    我认为您不能手动更新它们,因为如果出现问题,您将不得不删除所有内容并重新安装。如果有一些迁移问题困扰您,请尝试。

    npm audit [--json|--parseable]
    npm audit fix [--force|--package-lock-only|--dry-run|--production|--only=dev]
    

    这里是文档https://docs.npmjs.com/cli/link

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-25
      • 1970-01-01
      • 2018-07-31
      • 1970-01-01
      • 2016-06-02
      • 2022-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多