如何在azure devops管道代理中安装yarn@2

rak*_*tin 3 azure-devops azure-pipelines yarnpkg-v2

我正在 azure devops 中设置构建管道。有一个名为 YarnInstaller@3 的助理任务,它允许我安装特定版本的 Yarn。但是,列出的唯一可用版本是 1.x,最新版本是 1.22。

https://yarnpkg.com/getting-started/install上有关于从 v1 迁移到 v2+ 的迁移说明,我已在本地完成此操作。由于只有yarn@1.x可用,似乎我每次运行构建时都必须迁移,例如

  • 安装纱线1
  • 将版本设置为 berry
  • 纱线套装版本最新
  • 然后照常运行yarn命令

这似乎没有必要,特别是因为我已经提交了.yarnrc.yml.yarn子目录。我这样说有错吗?还有另一种方法可以在我的管道中安装yarn@2+吗?

Bri*_*SFT 8

您可以在管道中使用以下命令行将 Yarn 版本更新为2.x.

yarn set version berry
yarn set version 2.x
Run Code Online (Sandbox Code Playgroud)

欲了解更多详情,您可以查看:

下面是我在我这边测试的示例管道,它可以按预期工作。您可以引用它并在构建管道中添加相关步骤。

  • azure-pipelines.yml
  steps:
  . . .

  - task: Bash@3
    displayName: 'Yarn version before update'
    inputs:
      targetType: inline
      script: |
        echo "Yarn version before update:"
        yarn --version
  
  - task: Bash@3
    displayName: 'Update Yarn version to 2.x'
    inputs:
      targetType: inline
      script: |
        yarn set version berry
        yarn set version 2.x

  - task: Bash@3
    displayName: 'Yarn version after update'
    inputs:
      targetType: inline
      script: |
        echo "Yarn version after update:"
        yarn --version
Run Code Online (Sandbox Code Playgroud)
  • 结果。 在此输入图像描述

    在此输入图像描述


Woj*_*Maj 6

最好的方法是使用 Node Corepack,正如 Yarn 文档所建议的那样。这使您能够运行现代版本的 Yarn (2+),而无需安装 Yarn Classic (1)。

\n

首先,添加packageManager到您的package.json,例如:

\n
  "packageManager": "yarn@3.6.0"\n
Run Code Online (Sandbox Code Playgroud)\n

(这应该适用于 Yarn 的所有现代版本:2、3、4,以及可能的未来版本)

\n

完成此操作后,您将不再需要在存储库中保留 Yarn 二进制文件。您可以安全地yarnPath从中删除yarnrc.yml,并且可以删除文件夹的内容.yarn/releases

\n

然后(假设您安装了 Node 14+),您可能需要通过运行以下命令来启用 Corepack:

\n
corepack enable\n
Run Code Online (Sandbox Code Playgroud)\n

如果一切顺利,运行

\n
yarn -v\n
Run Code Online (Sandbox Code Playgroud)\n

您的项目中现在应该返回正确的版本号。

\n

请注意,第一次使用Node CorepackpackageManager中指定的二进制文件package.json时,将在后台透明地下载它,因此您需要互联网访问,并且第一个命令可能需要几秒钟才能完成。之后,您将能够在无需访问互联网的情况下使用该二进制文件,并且不会出现任何延迟。

\n

现在你已经验证了你的设置在本地计算机上正常工作,是时候在 Azure Pipelines 上执行相同的操作了。这是完整的设置,从无到你的第一个 Yarn 驱动的命令:

\n
corepack enable\n
Run Code Online (Sandbox Code Playgroud)\n