deploy heroku npm gruntjs dependency-management

heroku deploy



Instalar devDependencies en Heroku (3)

Me gustaría que Heroku construya mi aplicación después de presionarla para que no tenga que empujar la carpeta de compilación cada vez que realice un cambio. Sin embargo, heroku solo instala las dependencias del paquete.json y grunt (mi herramienta de compilación) y todos sus componentes están en devDependencies. Me gustaría mantenerlos allí donde pertenecen. ¿Cuál es la solución aquí?


Keeping NPM_CONFIG_PRODUCTION true , utilicé los ganchos de script de Heroku :

"scripts": { ... "heroku-prebuild": "export NPM_CONFIG_PRODUCTION=false; export NODE_ENV=; NPM_CONFIG_PRODUCTION=false NODE_ENV=development npm install --only=dev --dev", "heroku-postbuild": "export NPM_CONFIG_PRODUCTION=true; export NODE_ENV=production;", ... },

(Finalmente) funcionó para mí.


Heroku instala de forma predeterminada solo las dependencias de producción, ignorando las dependencias de desarrollo en devDependencies .

Establecer la variable de producción npm en false hace el truco:

heroku config:set NPM_CONFIG_PRODUCTION=false

Más información está disponible en la página de soporte de Heroku Node.js.


scripts": { ... "heroku-prebuild": "npm install --only=dev" }

Esto fue suficiente para mí. Gracias a PixnBits por la pista sobre heroku-prebuild. Además, mi problema era con babel. Terminé moviendo babel-preset-es2015 y otros ajustes preestablecidos en dependencias, de lo contrario babel se quejó de los ajustes preestablecidos.

Actualización: 11/8/2017 He estado teniendo problemas con esto. Parece que las cosas han cambiado (y npm está en 5.3 ahora). Pero lo que veo es que el script heroku-prebuild se está ejecutando, y luego se ejecuta el script posterior a la instalación (pero solo estaba tratando de instalar -dev).

Entonces, lo que he estado haciendo que funciona es simplemente ejecutar:

heroku config:set NPM_CONFIG_PRODUCTION=false

Y solo déjalo así. Me encantaría una mejor solución.