javascript - loop - Compilación de guiones de café
coffeescript wikipedia (11)
Al estar un nivel por encima de / src, esto funcionará para todos los archivos .coffee encontrados sin importar la profundidad.
coffee -w -c src/
Estoy buscando la forma más sencilla posible de compilar automáticamente los scripts de café en JS.
Leyendo documentation pero aun teniendo problemas para conseguir exactamente lo que quiero.
Lo necesito para ver la carpeta src/
para cualquier modificación de los archivos *.coffee
y compilarlos en un archivo javascript concatenado en lib/something.js
.
De alguna manera no se puede combinar mirar, compilar y concatenar juntos. : /
Bueno coffee --watch
tiene 2 defectos principales:
- Los nuevos archivos creados después de que se haya emitido el comando no se están viendo
- Requiere iniciación manual para que haya una posibilidad de que olvides hacerlo, lo que no suena más brillante que el de compilar antes de que lo
git commit
.
La solución que se me ocurrió es una secuencia de comandos Bash bastante simple que toma coffee --watch
algunos pasos más allá, lo que permitirá que su árbol de directorios en funcionamiento se pueda ver desde el inicio de sesión del sistema, y se compile automáticamente en JavaScript en cada archivo guardar / cambiar o creación de nuevo archivo:
http://blog.gantrithor.com/post/11609373640/carefree-coffeescript-auto-compiler
Puede haber una forma más elegante de hacer esto, pero esta implementación funciona muy bien =)
Cambió de opinión acerca de la concatenación.
Se creó un pequeño archivo compiler.sh que contiene:
dnotify -M src/ -e coffee -o lib/ -c src/ &
dnotify -M spec/ -e coffee -o lib/ -c spec/ &
Tipo se adapta a mis necesidades.
Esto me ayudó ( -o
directorio de salida, -j
unirse a project.js, -cw
compilar y ver el directorio de coffeescript en profundidad):
coffee -o web/js -j project.js -cw coffeescript
He encontrado que el compilador de coffeescript de línea de comandos no es adecuado para estructuras de proyectos complejos.
Si usted y su proceso de construcción están tan necesitados como yo, visite Grunt - http://gruntjs.com/
Permite procesos de construcción altamente complejos, por ejemplo, puede
- concatenar café a nuevo (s) archivo (s)
- compilar
- concatenar algunos JS adicionales
- minimizar
Las tareas se pueden juntar, y los archivos / carpetas observados también son altamente personalizables.
La documentación del script de café proporciona un ejemplo para esto:
Observe los cambios en un archivo y vuelva a compilarlo cada vez que se guarde el archivo:
coffee --watch --compile experimental.coffee
Si tiene un script en particular que desea ejecutar, puede usar el comando linux dnotify: http://linux.die.net/man/1/dnotify
dnotify --all src/ --execute=command
Edit: tuve algunos problemas con la parte de ejecución de dnotify, podría ser un error, pero esto es lo que conseguí trabajando:
dnotify --all . -e `coffee -o lib/ --join --compile *.coffee`
Eso ejecutaba el comando de compilación cada vez que se modificaba un archivo.
Si agrega el comando con un signo, como esto:
dnotify --all . -e `coffee -o lib/ --join --compile *.coffee` &
Se iniciará en un proceso separado. Para obtener el ID de proceso, puede utilizar esto:
ps ux | awk ''/dnotify/ && !/awk/ {print $2}''
Y luego, puedes matar el proceso usando algo como esto:
kill `ps ux | awk ''/dnotify/ && !/awk/ {print $2}''`
Pero si ese es tu objetivo (matar por nombre de proceso), puedes hacerlo de una manera más simple usando:
killall dnotify
La respuesta corta a su pregunta es que la utilidad del coffee
no fue diseñada para esto; La combinación de la visualización de archivos y la concatenación es en realidad bastante compleja. Espere herramientas de compilación más sofisticadas para CoffeeScript en un futuro próximo; hasta entonces, es posible que desee realizar las compilaciones de su proyecto escribiendo un script Cakefile o Ruby Watchr. Luego, también puede incluir minificación, generación de documentación y cualquier otra cosa que necesite para su proyecto particular (sin mencionar la garantía de una orden de concatenación particular).
Prueba jitter
https://github.com/TrevorBurnham/jitter
Mira un directorio de archivos .coffee, y cuando detecta que un archivo ha cambiado, automáticamente lo vuelve a compilar en .js
jitter / path / to / coffee / dir / path / to / js / dir
Lo he estado probando con un proyecto usando coffescript y sencha touch, parece funcionar bastante bien. No se ocupa del problema de concatenación, pero es realmente fácil de usar para alguien que solo necesita la compilación automática.
nodemon -x coffee server.coffee
hace por mí.
Instala nodemon
usando npm install -g nodemon
find -type f | grep .coffee | xargs ls -t | head -n 1 | xargs coffee -cw
encuentre el último script de café modifcado y póngalo en modo de compilación-reloj
find `pwd` | grep .coffee | xargs coffee -w -c
Prueba este en el directorio raíz de la aplicación.