将AWS CodeArtifact相关Linux脚本转换为PowerShell脚本求助
将AWS CodeArtifact的Linux脚本转换为PowerShell脚本
转换后的PowerShell脚本
# 获取CodeArtifact仓库Endpoint,解析JSON并提取实际URL $endpointResponse = aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format npm | ConvertFrom-Json $endpoint = $endpointResponse.repositoryEndpoint # 设置指定作用域的npm registry npm config set registry $endpoint --scope=@my-package # 获取CodeArtifact授权令牌,解析JSON并提取令牌值 $tokenResponse = aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --repository my_repo | ConvertFrom-Json $token = $tokenResponse.authorizationToken # 从Endpoint中提取registry域名(替代硬编码,提升灵活性) $registryDomain = $endpoint -replace '^https://', '' -replace '/npm/.*$', '' # 设置npm认证令牌 npm config set "//$registryDomain/:_authToken" $token # 启用始终认证 npm config set "//$registryDomain/:always-auth" true
关键细节说明
- 变量赋值与JSON解析:
PowerShell用$变量名 = 值语法赋值,aws CLI返回JSON格式结果,必须通过ConvertFrom-Json解析才能提取repositoryEndpoint、authorizationToken这类具体字段。原Linux脚本实际也需要jq工具提取值,这里按正确逻辑补全了处理步骤。 - 带作用域的registry配置:
在npm config set命令中直接引用$endpoint变量即可,PowerShell会自动替换变量值,完成指定作用域的registry绑定。 - 避免硬编码URL:
从已获取的$endpoint中提取域名部分,无需手动写死完整URL,后续域名、仓库名变更时,脚本无需重复修改。
内容的提问来源于stack exchange,提问作者Nemus
相关产品推荐
相关产品推荐

