我正在设置一个环境变量,然后在npm install期间尝试在.npmrc文件中使用它,但是token变量似乎不可用。
下面是我的脚本(config.sh):
#!/bin/sh
NPM_READ_ONLY_TOKEN=$(firebase functions:config:get npm.read_only)
export NPM_READ_ONLY_TOKEN=$(eval echo $NPM_READ_ONLY_TOKEN)
# exit 0;下面是我的package.json预安装脚本:
"preinstall: ". ./config.sh && echo $NPM_READ_ONLY_TOKEN"和我的.npmrc:
//registry.npmjs.org/:_authToken=$NPM_READ_ONLY_TOKEN当我运行npm install时,预安装脚本将执行,并打印正确的令牌,但在安装过程中,我得到:
npm ERR! code E404
npm ERR! 404 Not Found: @scoped/package@1.x我开始认为这个令牌实际上对.npmrc文件是不可用的。为了测试这一点,我在一个postinstall脚本中回显了该令牌,但它没有打印该令牌。请注意,我测试时没有将限定了作用域的包作为依赖项,以便可以访问postinstall脚本。我还通过将令牌直接插入.npmrc来验证我的包是否可用,并成功下载了它。
我翻了很久,偶然发现了this的帖子。在.npmrc文件中用大括号将变量名括起来并不能修复它,实际上会更多地破坏它。我相信不使用大括号是正确的方式(这在一个git问题中也被指出)。
是什么原因导致我的.npmrc无法获取环境变量?
发布于 2018-02-14 10:30:12
这个技术做到了这一点:
#!/bin/bash
echo 'Setting up development env';
NPM_READ_ONLY_TOKEN=$(firebase functions:config:get npm.read_only)
NPM_READ_ONLY_TOKEN=$(eval echo $NPM_READ_ONLY_TOKEN)
rm -f ./.npmrc
echo "//registry.npmjs.org/:_authToken=${NPM_READ_ONLY_TOKEN}" > .npmrc
# exit 0;https://stackoverflow.com/questions/48760479
复制相似问题