Heroku节点_模块未缓存

Heroku节点_模块未缓存,heroku,npm,node-modules,buildpack,Heroku,Npm,Node Modules,Buildpack,我有toplevel package.json,其中我根据 因此,toplevel中没有依赖项,但我有frontend/package.json和mockserver/package.json,其中有许多依赖项安装在各自的node_模块中。这是各个package.json的外观(例如mockserver): 这可以正常工作并进行部署,但它不会缓存定义为缓存的两个节点_模块 以下是heroku build的输出: -----> Creating runtime environment

我有toplevel package.json,其中我根据

因此,toplevel中没有依赖项,但我有frontend/package.json和mockserver/package.json,其中有许多依赖项安装在各自的node_模块中。这是各个package.json的外观(例如mockserver):

这可以正常工作并进行部署,但它不会缓存定义为缓存的两个节点_模块

以下是heroku build的输出:

-----> Creating runtime environment

       NPM_CONFIG_LOGLEVEL=error
       NPM_CONFIG_PRODUCTION=true
       NODE_VERBOSE=false
       NODE_ENV=demo
       NODE_MODULES_CACHE=true

       npm scripts will see NODE_ENV=production (not 'demo')
       https://docs.npmjs.com/misc/config#production
-----> Installing binaries
       engines.node (package.json):  7.10.0
       engines.npm (package.json):   unspecified (use default)

       Downloading and installing node 7.10.0...
       Using default npm version: 4.2.0
-----> Restoring cache
       Loading 2 from cacheDirectories (package.json):
       - frontend/node_modules (not cached - skipping)
       - mockserver/node_modules (not cached - skipping)
-----> Building dependencies
       Installing node modules (package.json)
-----> Caching build
       Clearing previous node cache
       Saving 2 cacheDirectories (package.json):
       - frontend/node_modules (nothing to cache)
       - mockserver/node_modules (nothing to cache)
-----> Build succeeded!
请注意,这两个node_模块是在以前的版本中安装的,但它表示(不是缓存-跳过)

提前谢谢

我在这里得到了答案:

总之,我应该使用heroku postbuild而不是start脚本来安装自定义依赖项。并且仅将start用作应用程序启动命令

顶级package.json

  "scripts": {
    "heroku-postbuild": "npm --prefix frontend run installAndCompile && npm --prefix mockserver run installAndCompile",
    "start": "npm --prefix mockserver start"
  },
  "scripts": {
    "installAndCompile": "npm install && npm run compile"
  },
子项目的package.json

  "scripts": {
    "heroku-postbuild": "npm --prefix frontend run installAndCompile && npm --prefix mockserver run installAndCompile",
    "start": "npm --prefix mockserver start"
  },
  "scripts": {
    "installAndCompile": "npm install && npm run compile"
  },