将作用域npm注册表URL定义为环境变量
我们有一个作用域模块,将作用域npm注册表URL定义为环境变量,npm,travis-ci,Npm,Travis Ci,我们有一个作用域模块,npm要解决它,我们必须说明它的回购协议在哪里。这可以在.npmrc中完成,例如: @my-scope:registry=http://my-sweet-replication.example.com/npm/ 我的问题是,由于GET请求的代理和身份验证,我必须在.npmrc中输入不同的值,用于开发和构建服务器(travis enterprise)。我们已经利用了这样一个事实,npm可以读取未限定范围的包的环境变量,但由于@和:都是环境变量中的无效字符,我无法导出正确的U
npm
要解决它,我们必须说明它的回购协议在哪里。这可以在.npmrc
中完成,例如:
@my-scope:registry=http://my-sweet-replication.example.com/npm/
我的问题是,由于GET请求的代理和身份验证,我必须在.npmrc
中输入不同的值,用于开发和构建服务器(travis enterprise)。我们已经利用了这样一个事实,npm
可以读取未限定范围的包的环境变量,但由于@
和:
都是环境变量中的无效字符,我无法导出正确的URL
关于如何告诉npm在哪里查找作用域模块而不将其放入
.npmrc
?目前,我的解决方案是使用env
命令,即(在.travis.yml
中)
这是唯一的办法吗
将其放入travisenv
矩阵不起作用,因为它使用EXPORT
,因此它尝试只导出注册表
(发布我的答案,因为我没有从谷歌上得到任何点击)通过安装带有相应令牌的
~/.npmrc
手动创建用户
首先,进入项目的envvars,并在某个名称下设置令牌。对于这个例子,我使用了NPM_令牌
,但这并不重要。有些Unice使用小写的envvars,所以使用allcaps
接下来将以下内容添加到.travis.yml
:
before_install:
- echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc
现在,您应该有一个具有适当凭据的NPM用户。我在这方面也遇到了困难。选择使用特殊字符,如
@
和:
,非常麻烦,因为这些字符不是有效的环境变量字符。难道没有办法摆脱坏角色吗?
before_install:
- echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc