【问题标题】:How do I upgrade all scoped packages with Yarn?如何使用 Yarn 升级所有作用域包?
【发布时间】:2016-11-22 07:34:01
【问题描述】:

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

例如:

yarn upgrade @scope/* 

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

【问题讨论】:

  • 你知道npm是否支持这个?如果有,语法是什么?
  • 另外,这是哪个平台? Linux(或任何类 Unix 系统)或 Windows?
  • @Aurora0001:我不知道 npm 支持,我用的是 windows。我知道它不是一个有效的语法,只是问纱线中有没有任何选项。
  • 据我所知,Yarn 没有任何方法可以做到这一点。如果您愿意,我可以编写一个简短的 Node 脚本来搜索每个依赖项并为其运行 yarn upgrade。我问 npm 是否支持这个的原因是因为它会使问题更容易搜索,但如果你不确定也不要担心。

标签: npm yarnpkg


【解决方案1】:

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

请改用yarn upgrade-interactive

【讨论】:

    【解决方案2】:

    在当前版本 v1.2.1 中,您实际上可以使用 --scope 标志中的构建仅升级以该范围 yarn upgrade --scope @angular 开头的软件包。更多信息请访问官网yarn upgrade scope

    【讨论】:

      【解决方案3】:

      由于目前无法使用 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 团队提出更好的解决方案。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

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

            【讨论】:

            【解决方案7】:

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

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

            【讨论】:

              猜你喜欢
              • 2011-02-12
              • 1970-01-01
              • 1970-01-01
              • 2018-09-16
              • 1970-01-01
              • 1970-01-01
              • 2020-09-15
              • 1970-01-01
              相关资源
              最近更新 更多