如何使用 Yarn 升级所有范围内的包?

How do I upgrade all scoped packages with Yarn?

是否可以使用 Yarn 包管理器升级我的 package.json 的依赖项部分中的所有特定范围的包?

例如:

yarn upgrade @scope/* 

这将升级 yarn.lockpackage.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