如何使用Yarn升级所有作用域包?

Yah*_*Raj 4 npm yarnpkg

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

例如:

yarn upgrade @scope/* 
Run Code Online (Sandbox Code Playgroud)

这将升级yarn.lockpackage.json文件中的所有作用域包.

小智 20

https://github.com/torifat/yarn-update说:

yarn upgrade-interactive改用.


Cla*_*jda 9

在当前版本 v1.2.1 中,您实际上可以使用 build in--scope标志仅升级以该范围开头的包yarn upgrade --scope @angular。在官方网站上查看有关纱线升级范围的更多信息。


Aur*_*001 5

由于目前无法使用 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);
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

这是对它的作用的快速解释:

  • package.json从终端当前所在的目录加载

  • 然后我们解析 JSONpackage.json并获取"dependencies"密钥

  • 对于每个依赖项,我们运行指定为的正则表达式filterRegex(如果您需要更改它或想要解释正则表达式语法,我将使用RegExr 进行测试。我用作@angular正则表达式的示例前缀)

  • 如果依赖匹配,我们运行yarn upgrade [DEPENDENCY]并记录它

  • 否则,我们记录它被跳过。

如果您对此有任何问题,请告诉我,但它应该可以解决您的问题,直到 Yarn 团队提出更好的方法。