如何使用 npm 更新特定的子包版本
How to update specific sub-package version by using npm
我已经检查了 gulp
的全局包最小匹配
$ 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 中是否有任何命令更新我现有的包依赖项?
您不能也不应该更新子包(用作其他包的依赖项的包)。
Node 模块旨在包含 node_modules
内指定版本的所有依赖项,以避免新更新出现问题。假设您的 minimatch@3.0.4
引入了一些新功能,现在 glob@4.5.3
可能停止工作,反过来 gulp@3.9.1
也可能停止工作。
您应该:
更新到新的 gulp
版本而不用担心 minimatch
npm update gulp
或者直接使用最新版本的minimatch
,使用
npm install minimatch
但是如果你真的出于任何原因想要执行该操作,你可以尝试以下丑陋的技巧:
- 使用
npm install minimatch@3.0.4
在随机位置的某处安装 minimatch
- 转到此位置的
node_modules
文件夹并复制 minimatch
文件夹
- 找到您的 gulp 安装文件夹(这可能取决于您的系统,
C:\Users\user\AppData\Roaming\npm\node_modules\gulp
在 Windows 或 /usr/lib/node_modules/gulp/
在 Linux)
- 在
gulp
安装文件夹中搜索 minimatch
(find . | grep minimatch
)
- 将找到的所有
minimatch
文件夹替换为您刚刚安装在随机位置的文件夹
此时gulp
应该使用更新后的minimatch
,尽管npm list
仍会显示旧版本号。
同样,强烈不推荐这样做,只是为了回答问题而提供的。
这是我的解决方案,您可以使用
为最小匹配包创建符号link
npm ln
npm link (in package dir)
npm link [<@scope>/]<pkg>[@<version>]
这里link有更多的解释https://docs.npmjs.com/cli/link
我认为你不能手动更新它们,因为如果出现问题,你将不得不删除所有内容并重新安装。它有一些迁移问题打扰你然后试试。
npm audit [--json|--parseable]
npm audit fix [--force|--package-lock-only|--dry-run|--production|--only=dev]
我已经检查了 gulp
的全局包最小匹配$ 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 中是否有任何命令更新我现有的包依赖项?
您不能也不应该更新子包(用作其他包的依赖项的包)。
Node 模块旨在包含 node_modules
内指定版本的所有依赖项,以避免新更新出现问题。假设您的 minimatch@3.0.4
引入了一些新功能,现在 glob@4.5.3
可能停止工作,反过来 gulp@3.9.1
也可能停止工作。
您应该:
更新到新的 gulp
版本而不用担心 minimatch
npm update gulp
或者直接使用最新版本的minimatch
,使用
npm install minimatch
但是如果你真的出于任何原因想要执行该操作,你可以尝试以下丑陋的技巧:
- 使用
npm install minimatch@3.0.4
在随机位置的某处安装 minimatch
- 转到此位置的
node_modules
文件夹并复制minimatch
文件夹 - 找到您的 gulp 安装文件夹(这可能取决于您的系统,
C:\Users\user\AppData\Roaming\npm\node_modules\gulp
在 Windows 或/usr/lib/node_modules/gulp/
在 Linux) - 在
gulp
安装文件夹中搜索minimatch
(find . | grep minimatch
) - 将找到的所有
minimatch
文件夹替换为您刚刚安装在随机位置的文件夹
此时gulp
应该使用更新后的minimatch
,尽管npm list
仍会显示旧版本号。
同样,强烈不推荐这样做,只是为了回答问题而提供的。
这是我的解决方案,您可以使用
为最小匹配包创建符号linknpm ln
npm link (in package dir)
npm link [<@scope>/]<pkg>[@<version>]
这里link有更多的解释https://docs.npmjs.com/cli/link
我认为你不能手动更新它们,因为如果出现问题,你将不得不删除所有内容并重新安装。它有一些迁移问题打扰你然后试试。
npm audit [--json|--parseable]
npm audit fix [--force|--package-lock-only|--dry-run|--production|--only=dev]