将作用域的npm注册表URL定义为环境变量

时间:2016-07-15 07:46:58

标签: npm travis-ci

我们有一个范围模块,并且npm能够解决它,我们必须说明它的回购地点。这可以在.npmrc中完成,例如:

@my-scope:registry=http://my-sweet-replication.example.com/npm/

我的问题是,由于GET请求的一些代理和身份验证,我必须在.npmrc中为开发而不是构建服务器(travis enterprise)添加不同的值。我们已经利用npm可以读取非作用域的包的环境变量这一事实,但由于@:都是环境变量中的无效字符,我无法导出正确的URL。

有关如何告诉npm在哪里查找范围模块而不将其放入.npmrc的任何想法?

2 个答案:

答案 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用户。