我在我的项目中使用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发布";(例如(.npmrc创建得很好,但我认为由于NPM已经在运行,对npmrc的任何更改都不会被接受。当我运行";npm发布";第二次,它当然有效。
我的问题:有什么方法可以挂接到构建过程中应用令牌吗?我不想对我的用户说"在执行任何NPM命令之前,请先调用scriptabove.sh。我不喜欢"scriptabove.sh&;npm发布";任何一个
您可以创建这样的脚本
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.
publish包将首先运行prepublish
命令,然后在运行npm publish之后运行。这种方法是一种很好的方式来链接需要按顺序运行的npm命令。
有关这方面的更多信息,这里有一篇关于它的StackOverflow帖子。按顺序运行NPM脚本