Evite la actualización de npm después de cada implementación en Heroku

Tengo un sitio web Node.js alojado en Heroku, que implemento con git. Yo uso varios módulos de nodo, referenciados en package.json; ¿Hay alguna manera de evitar que Heroku los “actualice” cada vez que implemente una nueva versión del código, siempre que el paquete.json no haya cambiado?

Nota: esto sería especialmente útil para los módulos ‘nativos’, cuya comstackción lleva un poco de tiempo; para los módulos .js-only, logré eliminarlos de package.json y agregar sus node_modules / carpeta en el repository de git.

Soy el mantenedor del oficial Heroku Node.js Buildpack.

Tenemos una nueva versión del buildpack en beta que cuenta con soporte de almacenamiento en caché, diseñado específicamente para el caso de uso que describió anteriormente. Puede leer más sobre esto en https://github.com/heroku/heroku-buildpack-nodejs/tree/diet#about-this-refactor

Eventualmente, esto se convertirá en el buildpack predeterminado de Node.js en Heroku, pero si quiere usarlo ahora, deberá establecer la var. Config de BUILPACK explícitamente

heroku config:set BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-nodejs#diet -a my-node-app git commit -am "fakeout" --allow-empty git push heroku 

Parece que recientemente ha habido un progreso de David Dollar en el heroku-buildpack-nodejs .

En breve:

heroku config:set BUILDPACK_URL=https://github.com/ddollar/heroku-buildpack-nodejs

Vea la respuesta aquí: https://stackoverflow.com/a/18535675/1318839

Puede agregar paquetes .js y npm nativos y aún así evitar la “actualización”, (al menos la parte que se vuelve a descargar de la “actualización”.)

Incluya los paquetes nativos en su directorio node_modules/ . Cuando implementes en Heroku, npm install se saltará la descarga del paquete. npm rebuild también se ejecuta. Tomará algún tiempo volver a comstackr los paquetes nativos, pero debería ser muy soportable a menos que tengas toneladas de paquetes nativos.

Nota : documento Heroku sobre lo que Heroku hace cuando presionas una aplicación nodejs .

Nota: La npm rebuild es necesaria porque “hay fallas misteriosas que pueden ocurrir entre el nodo y los módulos de código nativo después de una actualización del nodo “.

Clone el buildpack de Heroku node.js y modifíquelo para eliminar el comando rebuild .

El comando se ejecuta actualmente aquí: https://github.com/heroku/heroku-buildpack-nodejs/blob/master/bin/compile#L180 , pero eso está obligado a cambiar.

Puede ejecutar crear una aplicación que use su propio buildpack modificando el siguiente comando para que coincida con su propio repository:
heroku create --buildpack http://github.com/heroku/heroku-buildpack-nodejs.git

O cambia el buildpack de una aplicación existente con:
heroku config:add BUILDPACK_URL=git://github.com/heroku/heroku-buildpack-nodejs.git