amazon-web-services - 在构建期间在 npmrc 中提供令牌
问题描述
我在我的项目中使用 AWS Codeartifact 作为私有 NPM 注册表(当然还有代理),我在获得完美工作流程时遇到了一些问题。现在我有一个 .sh 脚本,它为我生成 AWS 的 Auth 令牌并生成一个项目本地.npmrc文件。它看起来像这样:
#!/bin/sh
export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain xxxxx \
--domain-owner XXXXXX --query authorizationToken --output text --profile XXXXX`
export REPOSITORY_ENDPOINT=`aws codeartifact get-repository-endpoint --domain xxxxx \
--repository xxxx --format npm --query repositoryEndpoint --output text --profile xxxx`
cat << EOF > .npmrc
registry=$REPOSITORY_ENDPOINT
${REPOSITORY_ENDPOINT#https:}:always-auth=true
${REPOSITORY_ENDPOINT#https:}:_authToken=\${CODEARTIFACT_AUTH_TOKEN}
EOF
现在我当然不想手动运行这个脚本,但它应该是我的 NPM 构建过程的一部分,所以我从package.json中的类似内容开始
"scripts": {
"build": "tsc",
"prepublish": "./scriptabove.sh"
}
当运行“npm publish”(例如)时,.npmrc 会很好地创建,但我假设由于 NPM 已经在运行,对 npmrc 的任何更改都不会被拾取。当我第二次运行“npm publish”时,它当然可以工作。
我的问题:有没有办法挂钩到构建过程来应用令牌?我不想对我的用户说“请在执行任何 NPM 命令之前先调用 scriptabove.sh。我也不喜欢“scriptabove.sh && npm publish”。
解决方案
你可以创建一个这样的脚本
publish-package
命令可以随心所欲地调用
"scripts": {
"build": "tsc",
"prepublish": "./scriptabove.sh",
"publish-package": "npm run prepublish && npm publish"
}
解释:
Use & (single ampersand) for parallel execution.
Use && (double ampersand) for sequential execution.
然后发布包将首先运行prepublish
命令,然后在运行 npm 发布之后。此方法是链接需要按顺序运行的 npm 命令的好方法。
有关这方面的更多信息,请参阅有关它的 StackOverflow 帖子。 顺序运行 NPM 脚本
推荐阅读
- flutter - LateInitializationError: 字段 '_instance@99075166' 尚未初始化
- git - Heroku SSL 证书是否过期?
- javascript - 使用 useState 钩子在对象数组中修改和插入新对象
- linux - 当我使用 Ghidra 反汇编 .so 文件时,什么是未定义函数?
- c# - 停止 Unity Inspector DecoratorDrawer 链接
- json - 解析来自 Binance 公共 API 的 JSON 响应返回错误
- css - 验证(CSS 4.0):“文本”不是“-webkit-background-clip”属性的有效值
- python - 如何对数据框进行重复数据删除但保留和合并来自不同列的数据?
- javascript - js 获取所选单选值的总和并显示在递减进度条中
- pdf - 将数字签名字段插入动态创建的 PDF