Npm 运行Thread时,将使用来自bash的私有令牌生成Thread.lock文件

Npm 运行Thread时,将使用来自bash的私有令牌生成Thread.lock文件,npm,yarnpkg,gem-fury,Npm,Yarnpkg,Gem Fury,我在用Gem Fury做我们的一些私人套餐。我将Thread注册表设置为对公共和私有节点模块使用其代理: yarn config set registry "https://npm-proxy.fury.io/$GEMFURY_TOKEN/username" GEMFURY\u令牌在.bash中设置纱线配置获取注册表生成: https://npm-proxy.fury.io/$(GEMFURY_TOKEN)/username 当我们运行warn时,warn.lock文件将生成以下内容: pr

我在用Gem Fury做我们的一些私人套餐。我将Thread注册表设置为对公共和私有节点模块使用其代理:

yarn config set registry "https://npm-proxy.fury.io/$GEMFURY_TOKEN/username"
GEMFURY\u令牌
.bash
中设置<代码>纱线配置获取注册表生成:

https://npm-proxy.fury.io/$(GEMFURY_TOKEN)/username
当我们运行
warn
时,
warn.lock
文件将生成以下内容:

private-module@0.1.0:
  version "0.1.0"
  resolved "https://npm.fury.io/username/private-module/-/0.1.0.tgz?auth=<GEMFURY TOKEN>"
  dependencies:
    ember-cli-babel "^5.1.6"

private-module-2@0.1.4:
  version "0.1.4"
  resolved "https://npm.fury.io/username/private-module-2/-/0.1.4.tgz?auth=<GEMFURY TOKEN>"
  dependencies:
    ember-cli-babel "^5.1.6"
    ember-inflector "^1.9.6"
private-module@0.1.0:
版本“0.1.0”
决心”https://npm.fury.io/username/private-module/-/0.1.0.tgz?auth="
依赖项:
余烬cli巴别塔“^5.1.6”
专用模块-2@0.1.4:
版本“0.1.4”
决心”https://npm.fury.io/username/private-module-2/-/0.1.4.tgz?auth="
依赖项:
余烬cli巴别塔“^5.1.6”
余烬屈折符“^1.9.6”

我不想在git存储库中使用私有令牌。是否有一种方法可以在生成时将令牌从添加到
纱线.lock
文件中排除?

尝试设置
npm
,如中所述。 关键部分是将
always auth
设置为
true
并使用
npm登录


如果这样做没有帮助,那么您可以使用
Git
存储库中删除凭据。当更改提交到
Git
存储库时,锁定

我们最近解决了这个问题,但Gemfury文档并没有真正说明这一点。如果您需要拉入或推入您的CI构建,那么我认为您不应该使用
npm登录
,因为这将修改您的主页
.npmrc
,这没有多大帮助。我们发现,您所需要做的就是更改项目的
.npmrc
以使用共享组织帐户。通过这种方式,您可以控制项目的
.npmrc
版本,以便开发人员和CI服务器可以从相同的注册表URL读取,同时保持锁定文件令牌的自由:

@MY_ORG:registry=https://npm-proxy.fury.io/MY_ORG/
always-auth=true
//npm-proxy.fury.io/MY_ORG/:_authToken=${GEMFURY_TOKEN}

我在MyGet上托管的一个私有NPM提要也面临同样的问题。是的,我担心这可能是目前为止唯一可行的选择。我不喜欢的是,它需要开发人员严格遵守规则(每次创建使用私有包的新repo时都要添加钩子),而且它的级别很低,而且不是通用的:您可能需要根据您的私有注册表为特定模式定制钩子。最后,如果您使用的是Git以外的东西呢?我现在会继续悬赏,但你可能会赢。顺便说一句,你是否尝试过按此处所述设置
纱线
,它是否仍然将凭证保存在
Thread.lock
中?另外,这里有一个功能请求,正是关于您的问题:,但是
Thread
维护人员拒绝实施它。我们通过使用与您提到的Gem Fury文档中描述的设置类似的设置(我们使用的是MyGet)成功地解决了这个问题。如果您愿意更新您的答案来反映这一点,我认为这将是一个伟大的经典答案。关键部分是将
始终验证
设置为
true
,并使用
npm登录
。感谢所有回复。