我有一个包含$PROJECT/.npmrc
的项目,该项目具有一个auth令牌,该令牌授予对该项目所需的proviat仓库的只读访问权限:
$ cat .npmrc
//registry.npmjs.org/:_authToken={read-only-token}
如何使用用户令牌覆盖该令牌,以便发布程序包?
$ cat ~/.npmrc
//registry.npmjs.org/:_authToken={my-token}
documentation states的配置文件将以“优先级顺序”加载,其中项目配置具有最高优先级,并且似乎没有任何方法可以覆盖此优先级:
$ cd my-project/
$ npm whoami
project-readonly-user
$ cd ~
$ npm whoami
wolever
我知道可以定义一个NPM_TOKEN
环境变量:
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
但这意味着项目的每个用户都需要定义NPM_TOKEN
环境变量,这是不希望的(即,因为这意味着每个用户(包括只读用户)都需要定义{ {1}}环境变量,然后他们才能使用该项目。
答案 0 :(得分:0)
CLI参数优先于本地.npmrc配置,因此您可以通过以下方式覆盖它:
class Block extends Component {
constructor(props) {
super(props);
this.state = {
width: this.props.width,
height: this.props.height,
selected: false
// etc...
}
}
handleOnClick() {
this.setState({
selected: true
});
// But how do I update this in App?
}
render() {
return (
<div className="block" onClick={() => this.handleOnClick()}></div>
)
}
}
您可以添加一个npm脚本来发布,该脚本依赖于带有私有令牌的环境变量:
Block
答案 1 :(得分:0)
刚刚找到了解决方案。
编辑您的Expo: 37.0.3
expo-ads-admob: 8.1.0
react: 16.9.0
react-native: 0.61.4
文件:
.npmrc
每次要发布(powershell):
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
答案 2 :(得分:0)
显然文档已更改,并且在 npm publish 上无法通过 CLI 设置身份验证令牌,因此我提供了更多使用 NPM 与 Github Actions + Font Awesome PRO + Github Package Registry 的解决方案:
name: Node.js Package
on:
release:
types: [created]
workflow_dispatch:
jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout ?
uses: actions/checkout@master
- name: Setup node env ?
uses: actions/setup-node@v2
with:
node-version: '14.x'
registry-url: 'https://npm.pkg.github.com'
scope: '@mindfuel'
- name: Install Packages ?
run: npm ci
env:
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Build ??
run: npm run build
- name: Prepare NPM Config ??♂️
run: rm -f .npmrc
- name: Setup publishing Env ?
uses: actions/setup-node@v2
with:
node-version: '14.x'
registry-url: 'https://npm.pkg.github.com'
scope: '@mindfuel'
- name: Publish Package ?
run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
对我来说,诀窍是在删除现有的 .npmrc 后调用 setup-node。
我们有一个所有开发人员都使用的共享 .npmrc。它包括我们公司注册处的READ ONLY令牌:
# Font Awesome Pro Config
@fortawesome:registry=https://npm.fontawesome.com/
//npm.fontawesome.com/:_authToken=<your-token>
# Private Packages
@<github-username-or-org>:registry=https://npm.pkg.github.com/
//npm.pkg.github.com/:_authToken=<the-read-only-token>