package.json
是否可以使用 Yarn 包管理器升级我的依赖项部分中的所有特定范围的包?
例如:
yarn upgrade @scope/*
这将升级所有范围内的包yarn.lock
和package.json
文件。
https://github.com/torifat/yarn-update说:
请yarn upgrade-interactive
改用。
在当前版本 v1.2.1 中,您实际上可以使用 build in--scope
标志仅升级以该范围开头的包yarn upgrade --scope @angular
。在官方网站上查看更多关于纱线升级范围的信息。
由于目前无法使用 Yarn 执行此操作,因此我编写了一个非常短的 Node 脚本来执行您想要的操作:
var fs = require('fs');
var child_process = require('child_process');
var filterRegex = /@angular\/.*/;
fs.readFile('./package.json', function(err, data) {
if (err) throw err;
var dependencies = JSON.parse(data)['dependencies'];
Object.keys(dependencies).forEach(function(dependency) {
if (filterRegex.test(dependency)) {
console.log('Upgrading ' + dependency);
child_process.execSync('yarn upgrade ' + dependency);
} else {
console.log('Skipping ' + dependency);
}
});
});
这是对它的作用的快速解释:
package.json
它从终端当前所在的目录加载
然后我们解析 的 JSONpackage.json
并获取"dependencies"
密钥
对于每个依赖项,我们运行指定为的正则表达式filterRegex
(如果您需要更改它或想要解释正则表达式语法,我将使用RegExr进行测试。我用作@angular
正则表达式的示例前缀)
如果依赖匹配,我们运行yarn upgrade [DEPENDENCY]
并记录它
如果您对此有任何问题,请告诉我,但它应该可以解决您的问题,直到 Yarn 团队想出更好的东西。
或者更好地安装yarn-update。我发现它非常有用。您所要做的就是运行yarn-update
然后选择要更新的包。
yarn upgrade-interactive
应该使用最新版本的纱线为您解决问题。在安装上面提到的 @valentinvoilean 的 yarn-update 包时,甚至会输出此建议。
我在安装后使用npm-check-updates
,只需运行ncu -u
然后运行yarn
下面的代码将所有范围包升级到最新版本。
yarn upgrade --scope @scope-name --latest