首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用npm更新特定的子包版本

如何使用npm更新特定的子包版本
EN

Stack Overflow用户
提问于 2018-10-24 10:34:54
回答 2查看 6.4K关注 0票数 2

我已经检查过全球小包装是否有吞咽

代码语言:javascript
复制
$ 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@0.2.14和minimatch@3.04)中的所有minimatch版本更新为最新版本。

他们在npm中是否有任何命令来更新我现有的包依赖关系?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-13 10:21:33

下面是我的解决方案,您可以通过以下方法为minimatch包创建符号链接

代码语言:javascript
复制
npm ln
npm link (in package dir)
npm link [<@scope>/]<pkg>[@<version>]

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

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

代码语言:javascript
复制
npm audit [--json|--parseable]
npm audit fix [--force|--package-lock-only|--dry-run|--production|--only=dev]

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

票数 1
EN

Stack Overflow用户

发布于 2018-10-24 15:26:56

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

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

你应该要么:

更新到新的gulp版本,而不必担心minimatch

代码语言:javascript
复制
npm update gulp

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

代码语言:javascript
复制
npm install minimatch

但是,如果您的实际上是出于任何原因想要执行该操作,您可以尝试以下丑陋的攻击:

  • 使用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/ )
  • minimatch安装文件夹(find . | grep minimatch)中搜索gulp
  • 将所有找到的minimatch文件夹替换为您刚才在随机位置安装的文件夹

此时,gulp应该使用更新的minimatch,尽管npm list仍将显示旧的版本号。

同样,这是高度不推荐的,只是为了回答问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52966789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档