我们有一个范围模块,并且npm
能够解决它,我们必须说明它的回购地点。这可以在.npmrc
中完成,例如:
@my-scope:registry=http://my-sweet-replication.example.com/npm/
我的问题是,由于GET请求的一些代理和身份验证,我必须在.npmrc
中为开发而不是构建服务器(travis enterprise)添加不同的值。我们已经利用npm
可以读取非作用域的包的环境变量这一事实,但由于@
和:
都是环境变量中的无效字符,我无法导出正确的URL。
有关如何告诉npm在哪里查找范围模块而不将其放入.npmrc
的任何想法?
答案 0 :(得分:1)
目前,我的解决方案是使用env
命令,即(在.travis.yml
)
install: env 'NPM_CONFIG_@MY-SCOPE:REGISTRY=http://my-sweet-replication.example.com/npm/' npm install
这是唯一的方法吗?
将其放在travis env
矩阵中不起作用,因为它使用EXPORT
,因此它会尝试仅导出REGISTRY
(发布我的答案,因为我没有从谷歌搜索获得任何点击)
答案 1 :(得分:1)
手动创建用户,方法是安装带有相应令牌的~/.npmrc
。
首先,进入项目的envvars,并以某个名称设置令牌。对于此示例,我使用NPM_TOKEN
,但这并不重要。一些unices打破了小写的envvars,所以使用allcaps。
接下来将以下内容添加到您的.travis.yml
:
before_install:
- echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc
现在您应该拥有具有相应凭据的NPM用户。