Gulp implementa la carpeta dist de la aplicación Node en Heroku

Soy bastante nuevo en node, git, github y Heroku y estoy luchando por encontrar la mejor forma de enviar mi aplicación a Heroku sin saturar el repository con mi aplicación comstackda y miniaturizada y sin hacer demasiado en Heroku.

Mi proyecto node.js se parece un poco a esto:

- client ... code - server ... code - node_modules - package.json - gulpfile.js - dist - client - server 

Todo aparte de node_modules y dist va a github.

El file gulpfile comstack, minimiza y concatena todo lo que esté listo para su lanzamiento en dist . ¿Cómo presiono solo la carpeta dist para Heroku, sin ponerla también en github? ¿Cuál es la mejor práctica? Prefiero no enviar mi gulpfile a Heroku, ya que significa mover las devDependencies en package.json y usar un script de actualización posterior, ya que vincula el proyecto a Heroku más de lo que me gustaría.

Las razones para no utilizar el enlace de correos se resumen bien en estas dos publicaciones: http://sofes.miximages.com/a/15050864/344022 y http://sofes.miximages.com/a/21056644/344022 , lamentablemente no proporcionan un alternativa fácil de entender

Heroku ahora tiene un buildpack estático en desarrollo para manejar esto (ver https://github.com/heroku/heroku-buildpack-static )

Cree un file static.json para usar los files de dist / con el sufijo .html y networkingirija todas las llamadas al SPA

 { "root": "dist/", "clean_urls": true, "routes": { "/**": "index.html" } } 

Extienda los scripts package.json para asegurarse de que se construye dist / directory, por ejemplo

 "scripts": { ... "heroku-postbuild": "gulp" } 

Para que las dependencies dev de package.json se instalen

 heroku config:set NPM_CONFIG_PRODUCTION=false --app 

Múltiples packages de compilation para que pueda comstackr e implementar

 heroku buildpacks:add heroku/nodejs --app <app_name> heroku buildpacks:add https://github.com/heroku/heroku-buildpack-static.git --app <app_name> 

Su file de testing puede estar vacío en este caso.

Continúa, configura un gancho para publicaciones en heroku que construye tu aplicación y copy los files en donde serán servidos. Esta es una práctica bastante normal, y una vez que está configurada, todo lo que necesita hacer es un git push para implementar su aplicación, que es realmente útil. La alternativa es tener un repository por separado del cual copie y copie manualmente los files, pero eso no me parece fácil, hay más posibilidades de que se produzcan errores humanos al desorderar las dependencies u olvidar borrar los files generados que no son más time necesario etc.

Tuve el mismo problema de presionar solo la carpeta dist para la aplicación heroku, ahora estoy usando un enfoque diferente, no estoy seguro de que esté inactivo, pero funciona para mí. Creé un file de implementación y agregué el código siguiente

  import {spawnSync} from 'child_process'; function deploy(){ options = { cwd: path.resolve(__dirname, './dist') }; //push dist folder to deploy repo console.log('Initialising Repository'); spawnSync('git',['init'],options); console.log('Adding remote url'); spawnSync('git',['remote','add', remote.name, remote.gitPath],options) console.log('Add all files'); spawnSync('git',['add','.','--all'],options) console.log(`Commit with v${version}`); spawnSync('git', ['commit','-m',`v${version}`], options) console.log('Push the changes to repo'); spawnSync('git', ['push', '-f', remote.name, 'master'],options) } 

Mantuve la información de repository en package.json y leí aquí, estoy ejecutando esto después de una tarea de compilation de webpack. Así que esto impulsará mi nueva construcción a heroku. Incluso si el .git dentro de dist se elimina, se encargará de ello.