首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.npmrc未展开环境变量

.npmrc未展开环境变量
EN

Stack Overflow用户
提问于 2018-02-13 14:10:12
回答 1查看 1.5K关注 0票数 0

我正在设置一个环境变量,然后在npm install期间尝试在.npmrc文件中使用它,但是token变量似乎不可用。

下面是我的脚本(config.sh):

代码语言:javascript
复制
#!/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预安装脚本:

代码语言:javascript
复制
"preinstall: ". ./config.sh && echo $NPM_READ_ONLY_TOKEN"

和我的.npmrc:

代码语言:javascript
复制
//registry.npmjs.org/:_authToken=$NPM_READ_ONLY_TOKEN

当我运行npm install时,预安装脚本将执行,并打印正确的令牌,但在安装过程中,我得到:

代码语言:javascript
复制
npm ERR! code E404
npm ERR! 404 Not Found: @scoped/package@1.x

我开始认为这个令牌实际上对.npmrc文件是不可用的。为了测试这一点,我在一个postinstall脚本中回显了该令牌,但它没有打印该令牌。请注意,我测试时没有将限定了作用域的包作为依赖项,以便可以访问postinstall脚本。我还通过将令牌直接插入.npmrc来验证我的包是否可用,并成功下载了它。

我翻了很久,偶然发现了this的帖子。在.npmrc文件中用大括号将变量名括起来并不能修复它,实际上会更多地破坏它。我相信不使用大括号是正确的方式(这在一个git问题中也被指出)。

是什么原因导致我的.npmrc无法获取环境变量?

EN

回答 1

Stack Overflow用户

发布于 2018-02-14 10:30:12

这个技术做到了这一点:

代码语言:javascript
复制
#!/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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48760479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档