yaml - 如何在 Azure 管道中使用 npm link 命令
问题描述
我创建了 SPFX 库模块,其中的代码与多个 webpart 共享,类似于此处的一个。我使用npm link <lib name>
命令链接它。它在本地环境中以及当我在 SharePoint 在线应用程序目录中手动部署时运行良好。但是,如果我使用 Azure Pipelines(YAML 脚本)部署它,它总是会抛出找不到库的错误。
我已经确保首先构建库,然后在管道中构建其他 webparts(通过引入阶段),但仍然找不到库。有没有办法将 npm link 作为管道任务运行?
解决方案
如果库首先在不同的阶段或作业中构建,则库将不会与其他 webpart 位于同一代理计算机中。
假设库在阶段 A 中构建,其他 webpart 在阶段 B 中构建。作为解决方法,您需要使用阶段 A 中的发布构建工件任务将库作为工件发布到 azure devops 服务器。然后将库下载到在阶段 B 中使用Download Build Artifacts task构建其他 webpart 的代理。
对于以下示例:
该库在阶段 A 中构建,并作为名为library
.
在阶段 B 中,库工件从 azure devops 服务器下载到文件夹$(Build.ArtifactStagingDirectory)
。然后您可以通过路径引用该库以$(Build.ArtifactStagingDirectory)/library
执行 Stage B 中的以下任务。
如果在 Stage B 的不同作业中构建了多个 webpart,则 Stage B 中的每个作业都需要下载库工件,因为不同的作业在不同的代理虚拟机上运行。
stages:
- stage: A
jobs:
- job: Library
pool:
vmImage: "windows-latest"
steps:
...
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: {path to the library}
ArtifactName: library
- stage: B
dependsOn: A
jobs:
- job: WebParts1
pool:
vmImage: "windows-latest"
steps:
- task: DownloadBuildArtifacts@0
inputs:
downloadPath: $(Build.ArtifactStagingDirectory)
buildType: current
artifactName: library
...
- job: WebParts2
pool:
vmImage: "windows-latest"
steps:
- task: DownloadBuildArtifacts@0
inputs:
downloadPath: $(Build.ArtifactStagingDirectory)
buildType: current
artifactName: library
...
推荐阅读
- excel - 将一维数组值应用于二维数组的 .NumberFormat 的代码
- c# - 单例的这种使用有意义吗
- javascript - 是否可以在声明后扩展 JavaScript 类?
- identityserver4 - 如何创建 API/IdentityServer/Blazor(服务器端)应用程序?
- php - Perl/Sed 用小写版本替换捕获组中的所有匹配项
- python - 如何打印包含“包含”的神社模板
- node.js - 在 Node.js 中创建对象是否有推荐的方法?
- mysql - 如何遍历表的列以查找空列?
- r - 保存闪亮会话的安全方法?
- ios - 将 Codable 保存到 UserDefaults 并匹配 NSCoding 的外观