如何强制app引擎上传node_modules

Fra*_*eng 6 google-app-engine node.js

在我的项目中,我们使用带有打字稿的nodejs进行谷歌云应用程序引擎应用程序开发.我们有自己的构建机制来将ts文件编译成javascript,然后将它们收集到一个完整的可运行包中,这样我们就不想在google cloud上中继安装依赖项,而是我们想要将node_modules中的所有节点包上传到谷歌云.

但似乎google cloud将始终忽略node_modules文件夹并在部署期间运行npm install.即使我试图从app.yaml删除'skip_files: - ^ node_modules $',它也不起作用,谷歌云将始终自行安装包.

有没有人对node_modules的部署节点应用程序有这个想法?谢谢.

Vin*_*una 5

我观察到同样的问题。

我的解决方法是在部署之前重命名node_modules/node_modules_hack/。这可以防止 AppEngine 将其删除。

我在安装时将其恢复为原始名称,并使用以下(部分)package.json文件:

  "__comments": [
    "TODO: Remove node_modules_hack once AppEngine stops stripping node_modules/"
  ],
  "scripts": {
    "install": "mv -fn node_modules_hack node_modules",
    "start": "node server.js"
  },
Run Code Online (Sandbox Code Playgroud)

您可以node_modules/通过查看它生成的 Docker 镜像来确认 AppEngine 是否删除了您的镜像。您可以在图像页面上找到它。他们为您提供了一个命令行,您可以在云控制台上运行该命令行来获取它。然后您可以运行docker run <image_name> ls以查看您的目录结构。该图像是在 之后创建的npm install,因此一旦您使用了上面的解决方法,您就会在node_modules/那里看到您的。