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

问题描述 投票:0回答:9

是否可以使用 Yarn 包管理器升级我的

package.json
的依赖项部分中的所有特定范围的包?

例如:

yarn upgrade @scope/* 

这将升级

yarn.lock
package.json
文件中的所有范围包。

npm yarnpkg
9个回答
32
投票

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

请使用

yarn upgrade-interactive
代替。


14
投票

在当前版本 v1.2.1 中,您实际上可以使用 build in

--scope
标志来仅升级以该范围
yarn upgrade --scope @angular
开头的软件包。在官方网站上查看更多关于yarn升级范围的内容。


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);
        }
    });
});

这是其作用的快速解释:

  • 它从终端当前所在的目录加载

    package.json

  • 然后我们解析

    package.json
    的 JSON 并获取
    "dependencies"

  • 对于每个依赖项,我们运行指定为

    filterRegex
    的正则表达式(如果您需要更改此设置或想要解释正则表达式语法,我将使用 RegExr 进行测试。我使用
    @angular
    作为示例前缀正则表达式)

  • 如果依赖项匹配,我们运行

    yarn upgrade [DEPENDENCY]
    并记录它

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

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


3
投票

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

yarn-update
,然后选择您想要更新的软件包。


3
投票

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

yarn upgrade --scope @scope-name --latest

yarn upgrade -S @scope-name --latest

2
投票

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


1
投票
yarn upgrade --scope @scopeName --latest

//Example :- 
yarn upgrade --scope @angular --latest
// OR
yarn upgrade -S @angular --latest

1
投票

在 Yarn 的现代版本(Yarn 2 及更高版本)中,您可以使用

yarn up '@scope/*'
。您甚至不需要安装交互式升级插件。我花了比需要的时间更长的时间才找到这个!请参阅此处的文档:https://yarnpkg.com/cli/up请注意,
yarn upgrade
已弃用,并且在较新版本中不存在。


0
投票

我正在使用 npm-check-updates 安装后,只需运行

ncu -u
然后运行
yarn

© www.soinside.com 2019 - 2024. All rights reserved.