17

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

例如:

yarn upgrade @scope/* 

这将升级所有范围内的包yarn.lockpackage.json文件。

4

7 回答 7

32

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

yarn upgrade-interactive改用。

于 2017-03-28T14:34:48.713 回答
11

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

于 2017-10-27T08:31:18.480 回答
6

由于目前无法使用 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 团队想出更好的东西。

于 2016-11-24T17:42:15.190 回答
3

或者更好地安装yarn-update。我发现它非常有用。您所要做的就是运行yarn-update然后选择要更新的包。

于 2017-02-22T20:07:04.087 回答
2

yarn upgrade-interactive应该使用最新版本的纱线为您解决问题。在安装上面提到的 @valentinvoilean 的 yarn-update 包时,甚至会输出此建议。

于 2018-02-21T11:57:15.947 回答
0

我在安装后使用npm-check-updates ,只需运行ncu -u然后运行yarn

于 2020-03-19T23:28:16.817 回答
0

下面的代码将所有范围包升级到最新版本。

yarn upgrade --scope @scope-name --latest
于 2022-03-02T17:15:24.747 回答