如何使用 Yarn 升级所有范围内的包?
How do I upgrade all scoped packages with Yarn?
是否可以使用 Yarn 包管理器升级我的 package.json
的依赖项部分中的所有特定范围的包?
例如:
yarn upgrade @scope/*
这将升级 yarn.lock
和 package.json
文件中的所有范围包。
由于目前无法使用 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
加载package.json
然后我们解析package.json
的JSON并得到"dependencies"
键
对于每个依赖项,我们 运行 指定为 filterRegex
的正则表达式(如果您需要更改它或想要正则表达式语法的解释,我会测试RegExr。我使用 @angular
作为正则表达式的示例前缀)
如果依赖匹配,我们运行yarn upgrade [DEPENDENCY]
并记录它
- 否则,我们记录它被跳过。
如果您对此有任何问题,请告诉我,但它应该可以解决您的问题,直到 Yarn 团队想出更好的方法。
或者最好安装 yarn-update。
我发现它非常有用。
您所要做的就是 运行 yarn-update
然后 select 您要更新的软件包。
https://github.com/torifat/yarn-update 说:
请改用yarn upgrade-interactive
。
在当前版本 v1.2.1 中,您实际上可以使用内置 --scope
标志来仅升级以该范围 yarn upgrade --scope @angular
开头的软件包。在官方网站yarn upgrade scope上查看更多内容。
yarn upgrade-interactive
应该可以用 up-to-date 版本的纱线来解决问题。安装上面@valentinvoilean 提到的 yarn-update 包时甚至会输出此建议。
我正在使用 npm-check-updates
安装后,只需 运行 ncu -u
然后 运行 yarn
下面的代码将范围内的所有包升级到最新版本。
yarn upgrade --scope @scope-name --latest
yarn upgrade --scope @scopeName --latest
//Example :-
yarn upgrade --scope @angular --latest
// OR
yarn upgrade -S @angular --latest
是否可以使用 Yarn 包管理器升级我的 package.json
的依赖项部分中的所有特定范围的包?
例如:
yarn upgrade @scope/*
这将升级 yarn.lock
和 package.json
文件中的所有范围包。
由于目前无法使用 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
加载package.json
然后我们解析
package.json
的JSON并得到"dependencies"
键对于每个依赖项,我们 运行 指定为
filterRegex
的正则表达式(如果您需要更改它或想要正则表达式语法的解释,我会测试RegExr。我使用@angular
作为正则表达式的示例前缀)如果依赖匹配,我们运行
yarn upgrade [DEPENDENCY]
并记录它- 否则,我们记录它被跳过。
如果您对此有任何问题,请告诉我,但它应该可以解决您的问题,直到 Yarn 团队想出更好的方法。
或者最好安装 yarn-update。
我发现它非常有用。
您所要做的就是 运行 yarn-update
然后 select 您要更新的软件包。
https://github.com/torifat/yarn-update 说:
请改用yarn upgrade-interactive
。
在当前版本 v1.2.1 中,您实际上可以使用内置 --scope
标志来仅升级以该范围 yarn upgrade --scope @angular
开头的软件包。在官方网站yarn upgrade scope上查看更多内容。
yarn upgrade-interactive
应该可以用 up-to-date 版本的纱线来解决问题。安装上面@valentinvoilean 提到的 yarn-update 包时甚至会输出此建议。
我正在使用 npm-check-updates
安装后,只需 运行 ncu -u
然后 运行 yarn
下面的代码将范围内的所有包升级到最新版本。
yarn upgrade --scope @scope-name --latest
yarn upgrade --scope @scopeName --latest
//Example :-
yarn upgrade --scope @angular --latest
// OR
yarn upgrade -S @angular --latest