node.js - 为 Google App Engine Standard 使用私有(private) npm 注册表

标签 node.js google-app-engine npm-install google-appengine-node npm-registry

对于所有其他 stackoverflow 问题,似乎人们在询问私有(private) npm git 存储库或不同的技术堆栈。我很确定我可以将私有(private) npm 注册表与 GAE Flexible 一起使用,但我想知道标准版本是否可行?

来自GAE standard docs ,这似乎是不可能的。还有其他人想出其他办法吗?

最佳答案

Google 将此功能请求标记为“不会修复,预期行为”,但有一个解决方法。

大概您可以在 CI/CD 管道的构建阶段访问环境变量。通过让构建脚本使用环境变量的值(注意:,而不是变量名称)覆盖 .npmrc 文件来开始该阶段。然后,.npmrc 文件(及其中的 token )将可供 CI/CD 管道的其余部分使用。

例如:

  - name: Install and build
    env:
      NPM_AUTH_TOKEN: ${{ secrets.PRIVATE_REPO_PACKAGE_READ_TOKEN }}
    run: |
      # Remove these 'echo' statements after we migrate off of Google App Engine.
      # See replies 14 and 18 here: https://issuetracker.google.com/issues/143810864?pli=1
      echo "//npm.pkg.github.com/:_authToken=${NPM_AUTH_TOKEN}" > .npmrc
      echo "@organizationname:registry=https://npm.pkg.github.com" >> .npmrc
      echo "always-auth=true" >> .npmrc
      npm install
      npm run compile
      npm run secrets:get ${{ secrets.YOUR_GCP_PROJECT_ID }}

向在 Issure Tracker 线程中回复 14 和 18 的匿名英雄们致敬 - https://issuetracker.google.com/issues/143810864?pli=1

如果您有一个 .npmrc 文件与您的项目代码一起 checkin ,您最好在顶部添加注释,说明它将在 CI/CD 管道期间被覆盖。否则,墨菲定律规定您(或队友)将 checkin 对该 .npmrc 文件的更改,然后浪费大量时间试图找出为什么该更改在部署期间无效。

关于node.js - 为 Google App Engine Standard 使用私有(private) npm 注册表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61114288/

相关文章:

node.js - Sequelize 命中数据库,为每个事务命令提供新查询

angularjs - 如何在本地安装 npm 包

google-app-engine - 从 Google 应用引擎迁移到 Google 计算引擎

Java 开发服务器错误地抛出FeatureNotEnabled 异常?

python-3.x - 在 Google App Engine Flex 上运行的应用程序的操作系统依赖项(pdftotext 库)

javascript - 使用 "npm install wdio"安装 webdriverIO 时出错

node.js - 如何使用 npm 仅安装 "devDependencies"

node.js - 使用 prismjs 生成静态 html - 如何启用行号?

node.js - Mongoose 多个连接

Javascript 内部 - clearTimeout 就在它触发之前