微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在构建期间在npmrc中提供令牌

如何解决在构建期间在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.

publish-package 将首先运行 prepublish 命令,然后运行 ​​npm publish。这种方法是链接需要按顺序运行的 npm 命令的好方法。

有关这方面的更多信息,请参阅 StackOverflow 上的帖子。 Running NPM scripts sequentially

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。