2017-03-02 3 views
0

Je travaille sur une application NPM/Redux (appelons ça Client) empaquetée avec browserify et je cherche maintenant à la déployer .Configurer et déployer browserify build (dist) avec git, npm (browserify/watchify) et les rails

  • Bien que le codage, que j'utilise watchify regarder en continu les modifications et reconstruire l'application; Bien sûr, cette sortie n'est pas minimisée et inclut le débogage et la carte source dans le fichier groupé javascript.

  • Pour cette raison, mon /dist/js/client.js était, jusqu'à présent, inclus dans mon dossier .gitignore, mais pas dans .npmignore depuis /dist/* ont besoin pour être dans le paquet final.

Client est en fait un ensemble de NPM être utilisé dans un autre non-NPM (rails) application qui repose sur la construction du javascript final. Chaque fois que je déploie mon application rails, elle exécute npm install, récupère client et doit utiliser sa version.

Deux options:

  • 1) un script postinstall sur client, en cours d'exécution en fait npm run build

    • Pro: Ce serait formidable, et éviter de commettre la construction
    • Con: Nécessite browserify , babel, node-sass etc., qui sont devDependencies et donc non inclus dans l'environnement final production (build échoue, et je ne veux pas ajouter ce paquet comme dependency, il ne me fait pas sens.
  • 2) réellement commis l'Construisons ensemble avec le client

    • Pro: Il fonctionne
    • Con: C'est assez ennuyeux car à chaque fois en mode dev, en cours d'exécution watchify, le fichier de construction est d'être remplacé, ce qui pourrait entraîner par inadvertance une version dev non modifiée de Client et est également très ennuyeux du point de vue git (il y a toujours des changements non validés dans la branche, cela crée des conflits avec d'autres développeurs, etc.).
    • J'ai essayé de .gitignore le fichier et git add --force en même temps, de sorte que je pourrais avoir un manuscrit publish de manuscrit, mais git ne semble pas l'aimer.

Quelle est la bonne façon d'aborder ce sujet?

Merci!

Répondre

0

En fait, en ce moment j'utilise npm run release localement, qui exécute le script suivant:

#!/bin/bash 
git stash 
git fetch 
git checkout -b "release/$(date +%Y%m%d-%H%M%S)" 
git pull origin master 
npm run build 
git add :/dist/* --force 
git commit -m '[NPM] (publish) Commiting build' 
git push origin HEAD 
git rm --cached :/dist/js/*.js 
git rm --cached :/dist/css/*.css 
git checkout @{-1} 
git stash pop 

Mais je ne l'aime pas :-)