Copie de script de café

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:

  • Les nouveaux fichiers créés après la publication de la commande ne sont pas surveillés
  • Nécessite une initiation manuelle afin qu'il puisse y avoir une chance d'oublier de le faire, ce qui ne sonne pas plus brillant que d'oublier de compiler avant de le faire 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 Grunthttp://gruntjs.com/

Il permet des processus de construction très complexes – par exemple, vous pourriez

  1. Concatencez le café au nouveau fichier (s)
  2. compiler
  3. Concatence d'autres JS
  4. Minify

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