Je recherche le moyen le plus simple possible de recompiler automatiquement les scripts de café dans JS.
Lire la documentation, mais toujours avoir des problèmes pour obtenir exactement ce que je veux.
J'ai besoin de regarder le dossier src/
pour les modifications de fichiers *.coffee
et de les compiler dans un fichier javascript concaténé dans lib/something.js
.
D'une certaine façon, vous ne pouvez pas combiner regarder, compiler et concatiner ensemble. : /
La documentation du script du café en donne un exemple:
Regardez un fichier pour les modifications et compilez-le chaque fois que le fichier est enregistré:
coffee --watch --compile experimental.coffee
Si vous avez un script particulier que vous souhaitez exécuter, vous pouvez utiliser la commande linux dnotify: http://linux.die.net/man/1/dnotify
dnotify --all src/ --execute=command
Edit: J'ai eu quelques problèmes avec –exécuter une partie de dnotify – peut-être un bug, mais c'est ce que j'ai travaillé:
dnotify --all . -e `coffee -o lib/ --join --compile *.coffee`
Cela a exécuté la commande de compilation chaque fois qu'un fichier a été modifié.
Si vous ajoutez la commande avec une signet, comme ceci:
dnotify --all . -e `coffee -o lib/ --join --compile *.coffee` &
Il sera lancé dans un processus distinct. Pour obtenir l'ID du processus, vous pouvez utiliser ceci:
ps ux | awk '/dnotify/ && !/awk/ {print $2}'
Et puis, vous pouvez tuer le processus en utilisant quelque chose comme ceci:
kill `ps ux | awk '/dnotify/ && !/awk/ {print $2}'`
Mais si c'est votre objectif (pour tuer par nom de processus), vous pouvez le faire de manière plus simple en utilisant:
killall dnotify
Essayez la gigue
https://github.com/TrevorBurnham/jitter
Il regarde un répertoire de fichiers .coffee, et lorsqu'il détecte qu'un fichier l'a changé, il le recompile automatiquement à .js
Jitter / path / to / coffee / dir / path / to / js / dir
Je l'ai essayé avec un projet utilisant coffescript et sencha touch, il semble fonctionner très bien. Ne prend pas en charge le problème de la concaténation, mais il est vraiment simple à utiliser pour quelqu'un qui a juste besoin d'une compilation automatique.
Cela m'a aidé ( -o
répertoire de sortie, -j
rejoindre project.js, -cw
compiler et regarder le répertoire coffeescript en profondeur):
coffee -o web/js -j project.js -cw coffeescript
Bien le coffee --watch
comporte 2 défauts majeurs:
git commit
La solution à laquelle je suis venu est un script Bash assez simple qui prend le coffee --watch
quelques étapes plus loin, ce qui permettra à votre arbre de répertoires de travail d'être surveillé depuis la connexion au système, et automatiquement compilé en JavaScript sur chaque fichier enregistrer / changer ou Création de nouveaux fichiers:
http://blog.gantrithor.com/post/11609373640/carefree-coffeescript-auto-compiler
Il peut y avoir un moyen plus élégant de le faire, mais cette implémentation fonctionne génial =)
find -type f | grep .coffee | xargs ls -t | head -n 1 | xargs coffee -cw
Trouve le dernier script de café modifié et le met en mode compile-watch
Étant un niveau supérieur / src, cela fonctionnera pour tous les fichiers .coffee trouvés, peu importe la profondeur.
coffee -w -c src/
J'ai trouvé que le compilateur coffeescript de ligne de commande n'était pas adapté aux structures de projets complexes.
Si vous et votre processus de construction sont aussi nécessiteux que moi, consultez Grunt – http://gruntjs.com/
Il permet des processus de construction très complexes – par exemple, vous pourriez
Les tâches peuvent être enfilées ensemble, et les fichiers / dossiers surveillés sont également personnalisables.
La réponse courte à votre question est que l'utilitaire de coffee
n'a pas été conçu pour cela; La combinaison de l'affichage des fichiers et de la concaténation est en fait assez complexe. Attendre des outils de construction plus sophistiqués pour CoffeeScript dans un proche avenir; Jusqu'à ce moment, vous voudrez peut-être faire les compilations de votre projet en écrivant un script Cakefile ou Ruby Watchr. Ensuite, vous pouvez également jeter de la minification, de la génération de documentation et de tout ce dont vous avez besoin pour votre projet particulier (sans parler de garantir un ordre de concaténation particulier).
find `pwd` | grep .coffee | xargs coffee -w -c
Essayez celui-ci dans le répertoire racine de l'application
Changé l'esprit de concaténation.
Créé petit fichier compilateur.sh qui contient:
dnotify -M src/ -e coffee -o lib/ -c src/ & dnotify -M spec/ -e coffee -o lib/ -c spec/ &
Cela correspond à mes besoins.
nodemon -x coffee server.coffee
fait pour moi.
Installez nodemon
utilisant npm install -g nodemon