2017-06-18 4 views
0

je package.json toplevel où je mets cacheDirectories selon https://devcenter.heroku.com/articles/nodejs-support#custom-cachingHeroku node_modules ne cache

"scripts": { 
    "start": "npm --prefix frontend start && npm --prefix mockserver start", 
}, 
"dependencies": { 
}, 
"devDependencies": { 
}, 
"cacheDirectories": ["frontend/node_modules", "mockserver/node_modules"], 
... 

Donc, pas de dépendances de premier niveau, mais je frontend/package.json et mockserver/package.json avec beaucoup des dépendances qui sont installées dans leurs node_modules respectifs. Voici comment les package.jsons respectifs ressemblent (par exemple mockserver):

"scripts": { 
    "start": "npm install && npm run build && node dist/server.js", 
}, 
dependencies... 
devdependencies... 

Cela fonctionne bien et se déploie, mais il ne cache pas les deux node_modules définis pour être mis en cache.

est ici la sortie de la construction de Heroku:

-----> 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! 

juste de noter que les deux node_modules ont été installés dans la version précédente, mais il dit (pas mises en cache - sauter).

Merci d'avance!

Répondre

0

J'ai obtenu la réponse ici: https://github.com/heroku/heroku-buildpack-nodejs/issues/435

En résumé, je aurais dû utiliser heroku-Postbuild au lieu de script de démarrage pour installer les dépendances personnalisées. Et utilisez start seulement comme commande de démarrage de l'application.

Niveau supérieur package.json

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

package.json de sous-projet

"scripts": { 
    "installAndCompile": "npm install && npm run compile" 
    },