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

时间:2016-11-22 07:34:02

标签: npm yarnpkg

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

例如:

yarn upgrade @scope/* 

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

6 个答案:

答案 0 :(得分:16)

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

请改用yarn upgrade-interactive

答案 1 :(得分:4)

在当前版本v1.2.1中,您实际上可以使用--scope标志中的内部版本来仅升级以该作用域yarn upgrade --scope @angular开头的包。点击官方网站yarn upgrade scope了解更多信息。

答案 2 :(得分:3)

由于Yarn目前无法做到这一点,我已经编写了一个非常简短的Node脚本来做你想做的事情:

#include <stdio.h> 
#define A 3

int main (){ 

  printf("In this version A = %d\n", A);
  return(0);
}

以下是对其作用的快速解释:

  • 它从终端当前所在的目录中加载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的JSON并获取package.json密钥

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

  • 如果依赖项匹配,我们运行@angular并记录

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

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

答案 3 :(得分:3)

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

答案 4 :(得分:0)

yarn upgrade-interactive应该为您提供最新版本的纱线。在安装上面提到的@valentinvoilean的纱线更新包时,甚至会输出这个建议。

答案 5 :(得分:0)

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