什么';为本地开发和CI设置专用npm注册表身份验证的最佳做法是什么?
我想知道是否有一个通用的最佳实践来为本地开发设置私有npm注册表身份验证,该身份验证也适用于CI(反之亦然) 以下是我目前的理解: 对于本地开发:运行将创建访问令牌的什么';为本地开发和CI设置专用npm注册表身份验证的最佳做法是什么?,npm,npm-registry,Npm,Npm Registry,我想知道是否有一个通用的最佳实践来为本地开发设置私有npm注册表身份验证,该身份验证也适用于CI(反之亦然) 以下是我目前的理解: 对于本地开发:运行将创建访问令牌的npm登录,创建~/.npmrc文件,并将访问令牌写入该文件,如下所示: @my-scope:registry=https://registry.npmjs.org/ //registry.npmjs.org/:_authToken=my-auth-token 在我的项目中,我有一个.npmrc文件(在包.json旁边): 这似乎
npm登录
,创建~/.npmrc
文件,并将访问令牌写入该文件,如下所示:
@my-scope:registry=https://registry.npmjs.org/
//registry.npmjs.org/:_authToken=my-auth-token
在我的项目中,我有一个.npmrc
文件(在包.json
旁边):
这似乎很有效。我可以安装我的私有软件包,因为npm似乎为注册表选择了用户级身份验证设置
对于CI:建议将以下内容添加到项目级别.npmrc
以在CI中插入身份验证:
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
不幸的是,这会覆盖我机器上的用户级配置.npmrc
文件具有(从高到低):项目级、用户级、全局、npm内置。npm CLI现在尝试使用npm_令牌环境变量进行身份验证,该环境变量显然不起作用,除非我在本地计算机上显式导出它
也许我错过了一些明显的东西。如果没有,我很好奇是否有共同的最佳实践来处理这个问题?要求每位员工在其机器上导出访问令牌(当它已经在用户级别中配置时)。npmrc
似乎不是一个很好的解决方案
或者,您也可以不必麻烦用户级配置(或npm登录),直接将访问令牌作为npm_令牌导出到每个员工的本地机器上。但正如前面提到的,我并不认为这是一个很好的解决方案。我设想一个标准解决方案(如用户级配置文件),每个员工都可以在其中设置公司的私有注册表。您可以保留用于开发的
.npmrc
,并通过在运行过程中覆盖它来在CI中对其进行修补:
//your-ci.yaml
步骤:
-环境:
NPM_令牌:${{secrets.NPM_令牌}
-运行:|
echo//registry.npmjs.org/:_authToken=${NPM_TOKEN}>.npmrc
npm安装
我以前见过这个解决方案,但我觉得很奇怪。如果在CI中再次覆盖项目级配置,那么它有什么意义呢?我还不需要它。由于npm有自己的身份验证令牌存储空间,所以将它们移动到env变量中只是为了打包ci配置似乎很麻烦。
//registry.npmjs.org/:_authToken=${NPM_TOKEN}