我刚刚在 GitHub 上发布了一个私有包,试图弄清楚它应该如何工作。现在我正在尝试将它安装在另一个项目中。我使用npm login --registry=https://npm.pkg.github.com具有write:packages,read:packages和repo权限的访问令牌进行了身份验证。在尝试运行时,npm install https://npm.pkg.github.com/@orgname/package-name我收到一条错误消息:
npm ERR! code E401
npm ERR! Unable to authenticate, need: Basic realm="GitHub Package Registry"
Run Code Online (Sandbox Code Playgroud)
如何添加/获得此权限?
我正在尝试npm publish在docker容器内自动化,但是当npm login命令尝试从提示中读取用户名和电子邮件时遇到了麻烦:
npm login << EOF
username
password
email
EOF
Run Code Online (Sandbox Code Playgroud)
它在终端bash中工作,但在没有打开STDIN的情况下不在容器中,并显示以下错误消息:
Username: Password: npm ERR! cb() never called!
npm ERR! not ok code 0
Run Code Online (Sandbox Code Playgroud)
根据npm-adduser:
用户名,密码和电子邮件将从提示中读入.
那么如何在npm login没有STDIN打开的情况下运行?
我的项目中需要一个模块来下载私有的npm软件包。为此,我正在使用一个.npmrc文件来提供下载软件包所需的只读令牌。为了将npm提供的令牌保留在文件之外,我希望将其添加为环境变量,并使其在文件中扩展。例如:
# .npmrc
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
Run Code Online (Sandbox Code Playgroud)
NPM_TOKEN在安装引用之前,我不知道如何将其添加到环境中。我尝试使用npm预安装脚本:
"preinstall": "NPM_READ_ONLY_TOKEN=my_token_goes_here_foo_bar"**
但是我仍然遇到同样的错误:
Error: Failed to replace env in config: ${NPM_READ_ONLY_TOKEN}
Run Code Online (Sandbox Code Playgroud)
我尝试使用echo命令进行测试,以查看是否preinstall在.npmrc变量扩展之前运行,但显然没有。我会收到错误,但看不到我的回声日志。我似乎在这里错过了一些东西。
我知道将令牌放入package.json会破坏将令牌从.npmrc文件中拉出的目的。我实际上正在使用提供环境配置服务的服务,该服务将用于运行命令并获取所需的令牌。例如TOKEN=config_service_value。
我遇到了一个我不确定如何以最佳方式解决的问题。这里是:
我们最近开始使用私有 NPM 包,并试图找出如何将我们的本地开发循环与 CI 和部署管道联系起来。
我已经查看并开始利用 NPM_TOKEN 变量。在 CI 中,我们正在执行以下操作:
echo "//registry.yarnpkg.com/:_authToken=$NPM_TOKEN" >> ~/.npmrc
Run Code Online (Sandbox Code Playgroud)
这很有效,但在 Heroku 上部署期间,我们无法访问 home。所以为了让它在 Heroku 上工作,我们在项目目录中添加了一个 .npmrc 文件。这很有效,因为 npm 使用环境变量来填充它。
问题是在本地,所有纱线命令都因缺少变量而失败。NPM 网站 ( https://blog.npmjs.org/post/118393368555/deploying-with-npm-private-modules )上的建议方法是将令牌添加到 .profile 中的环境中。这似乎不是最好的解决方案,因为该设置现在是全局的,并且应该保存在每个存储库中。
我在这里发现了一个使用 npm 的类似问题,但它似乎不适用于纱线。 在 .npmrc 中使用身份验证令牌 那里 的注释还提到它不适用于 npm,并且没有提到 dotenv 文件的文档。
有没有更好的方法来处理这个问题?似乎是一个很早就应该解决的常见问题......
npm ×4
node.js ×3
bash ×1
docker ×1
github ×1
npm-install ×1
npm-login ×1
npm-scripts ×1
package.json ×1
yarnpkg ×1