我检查了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
现在,我想将所有minimatch版本从特定的gulp软件包(所有minimatch@0.2.14和minimatch@3.04)更新为最新版本。
npm中的任何命令是否可以更新我现有的软件包依赖项?
答案 0 :(得分:2)
您不能也不应更新子软件包(用作其他软件包依赖项的软件包)。
节点模块旨在在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
文件夹C:\Users\user\AppData\Roaming\npm\node_modules\gulp
,在Linux上为/usr/lib/node_modules/gulp/
)minimatch
安装文件夹(gulp
)中搜索find . | grep minimatch
minimatch
文件夹替换为您刚刚安装在随机位置的文件夹这时gulp
应该使用更新的minimatch
,尽管npm list
仍会显示旧版本号。
同样,强烈不建议这样做,仅是为了回答问题。
答案 1 :(得分:1)
这是我的解决方案,您可以使用以下方式为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]