使用私有 NPM 模块部署 Google Cloud Functions
Deploying Google Cloud Functions using private NPM modules
当您部署 Google 云函数时,使用 Node.js 运行时,您可以在 Google 云存储中的 .zip
文件中提供代码(--source=gs://...
).
我使用所有已编译源和 node_modules/
文件夹制作 zip 文件,以便 GCF 拥有它需要的一切。我这样做是因为我使用的是 private NPM 模块,因此 npm i
将无法在 GCF 构建例程(在 GCP 内的云部署上运行)中运行。
问题:
即使我在 node_modules/
中包含了 100% 的所需模块,GCF 仍然存在部署错误,因为它试图访问私有 NPM 包存储库。
如果我删除 package.json
的 dependencies
和 devDependencies
部分,GCF 将无法启动,说找不到模块。
所以:
- 为什么 GCF 不能像其他工具那样使用捆绑的依赖项(例如 GitHub 操作)
- 使用 私有 NPM 模块部署 GCF 的最佳实践是什么?
最好的方法是在您的代码中包含一个名为 .npmrc 的文件, 在您的 npm 帐户中可以生成具有某些权限的访问令牌,并且该令牌在文件中配置我上面提到的,这样当部署完成后,命令 npm install 就可以下载私有包了。
Cloud Functions 刚刚发布了对 private dependencies and the Node.js runtime 的支持。
这允许在不将 .nomrc 凭据传递给 Cloud Functions 的情况下访问私有包。
当您部署 Google 云函数时,使用 Node.js 运行时,您可以在 Google 云存储中的 .zip
文件中提供代码(--source=gs://...
).
我使用所有已编译源和 node_modules/
文件夹制作 zip 文件,以便 GCF 拥有它需要的一切。我这样做是因为我使用的是 private NPM 模块,因此 npm i
将无法在 GCF 构建例程(在 GCP 内的云部署上运行)中运行。
问题:
即使我在 node_modules/
中包含了 100% 的所需模块,GCF 仍然存在部署错误,因为它试图访问私有 NPM 包存储库。
如果我删除 package.json
的 dependencies
和 devDependencies
部分,GCF 将无法启动,说找不到模块。
所以:
- 为什么 GCF 不能像其他工具那样使用捆绑的依赖项(例如 GitHub 操作)
- 使用 私有 NPM 模块部署 GCF 的最佳实践是什么?
最好的方法是在您的代码中包含一个名为 .npmrc 的文件, 在您的 npm 帐户中可以生成具有某些权限的访问令牌,并且该令牌在文件中配置我上面提到的,这样当部署完成后,命令 npm install 就可以下载私有包了。
Cloud Functions 刚刚发布了对 private dependencies and the Node.js runtime 的支持。
这允许在不将 .nomrc 凭据传递给 Cloud Functions 的情况下访问私有包。