Coffee script compilation

Szukam najprostszego możliwego sposobu na automatyczną rekompilację skryptów kawowych do JS.

Czytanie dokumentacji ale wciąż mam problemy, aby uzyskać dokładnie to, czego chcę.

Potrzebuję go do obejrzenia folderu src/ dla dowolnych modyfikacji *.coffee plików i skompilowania ich do skonkatenowanego pliku javascript do lib/something.js.

Jakoś nie można połączyć oglądania, kompilacji i konkatenacji razem. :/

Author: Arnis Lapsa, 2011-02-21

11 answers

Dokumentacja skryptu kawowego zawiera przykład:

Obserwuj plik pod kątem zmian i przekompiluj go za każdym razem, gdy plik zostanie zapisany:

coffee --watch --compile experimental.coffee

Jeśli masz konkretny skrypt, który chcesz wykonać, możesz użyć linuksowego polecenia dnotify: http://linux.die.net/man/1/dnotify

dnotify --all src/ --execute=command

Edytuj: Miałem pewne problemy z częścią -- execute dnotify-może to być błąd, ale to działa:

dnotify --all . -e `coffee -o lib/ --join --compile *.coffee`

Które wykonało polecenie compile każdego czas modyfikacji pliku.

Jeśli dodasz polecenie za pomocą ampersand, w ten sposób:

dnotify --all . -e `coffee -o lib/ --join --compile *.coffee` &

Zostanie uruchomiony w osobnym procesie. Aby uzyskać identyfikator procesu, możesz użyć tego:

ps ux | awk '/dnotify/ && !/awk/ {print $2}'

I wtedy możesz zabić proces używając czegoś takiego:

kill `ps ux | awk '/dnotify/ && !/awk/ {print $2}'`

Ale jeśli to jest twój cel (zabić według nazwy procesu), możesz to zrobić w prostszy sposób, używając:

killall dnotify
 21
Author: arnorhs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-21 01:22:13

Try jitter

Https://github.com/TrevorBurnham/jitter

Ogląda katalog .pliki coffee, a gdy wykryje, że plik został zmieniony, automatycznie go rekompiluje .js

Jitter / path / to / coffee/dir/path/to/js / dir

Wypróbowałem go z projektem wykorzystującym coffescript i sencha touch, wygląda na to, że działa całkiem nieźle. Nie zajmuje się problemem konkatenacji, ale jest naprawdę prosty w użyciu dla kogoś, kto po prostu wymaga automatycznej kompilacji.

 7
Author: Steve,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-03 20:00:55

To pomogło mi (-o katalog wyjściowy, -j dołączyć do projektu.js, -cw kompilować i oglądać katalog coffeescript w pełnej głębi):

coffee -o web/js -j project.js -cw coffeescript
 4
Author: Ikrom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-21 06:32:34

Cóż coffee --watch mA 2 główne wady:

  • Nowe pliki utworzone po wydaniu polecenia nie są obserwowane
  • wymaga ręcznej inicjacji, więc może być szansa, że zapomnisz to zrobić, co nie brzmi bardziej genialnie niż zapomnienie kompilacji przed git commit it

Rozwiązaniem, które wymyśliłem, jest dość prosty skrypt Bash, który zajmuje coffee --watch kilka kroków dalej, co pozwoli obserwować drzewo katalogów roboczych od czasu logowania do systemu i automatycznie get compiled into JavaScript on each file save/change lub tworzenie nowego pliku:

Http://blog.gantrithor.com/post/11609373640/carefree-coffeescript-auto-compiler

Może jest na to bardziej elegancki sposób, ale ta implementacja działa świetnie =)

 3
Author: gsklee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-18 20:23:42
find -type f | grep .coffee | xargs ls -t | head -n 1 | xargs coffee -cw

Znajdź ostatnio zmodyfikowany skrypt coffee i umieść go w trybie compile-watch

 2
Author: dux,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-30 14:41:51

Będąc o jeden poziom wyżej / src, będzie to działać dla wszystkich .pliki z kawą znalezione bez względu na głębokość.

coffee -w -c src/
 2
Author: mystrdat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-18 10:17:55

Okazało się, że kompilator coffeescript z linii poleceń jest źle dostosowany do złożonych struktur projektu.

Jeśli ty i twój proces budowy jesteście tak potrzebni jak ja, sprawdź Grunt - http://gruntjs.com/

Pozwala na bardzo złożone procesy budowania-na przykład możesz

  1. konkatenat kawy do nowego pliku(ów)
  2. compile
  3. połącz kilka dodatkowych JS
  4. minify

Zadania można łączyć, oglądane pliki / foldery są również wysoce konfigurowalne.

 2
Author: ckpcw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-01 07:59:05

Krótka odpowiedź na twoje pytanie jest taka, że narzędzie coffee nie zostało zaprojektowane do tego celu; łączenie oglądania plików i konkatenacji jest w rzeczywistości dość złożone. Spodziewaj się bardziej zaawansowanych narzędzi do budowania CoffeeScript w najbliższej przyszłości; do tego czasu możesz chcieć tworzyć swoje projekty, pisząc plik Cakefile lub skrypt Ruby Watchr. Następnie możesz również dorzucić minifikację, generowanie dokumentacji i wszystko, czego potrzebujesz do konkretnego projektu (nie wspominając o zagwarantowaniu konkretnego porządku konkatenacji).

 1
Author: Trevor Burnham,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-23 02:09:26
find `pwd` | grep .coffee | xargs coffee -w -c

Spróbuj tego w katalogu głównym aplikacji

 1
Author: 3do,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-25 20:25:49

Zmienił zdanie na temat konkatenacji.
Created small compiler.sh plik zawierający:

dnotify -M src/ -e coffee -o lib/ -c src/ &
dnotify -M spec/ -e coffee -o lib/ -c spec/ &
Rodzaj a odpowiada moim potrzebom.
 0
Author: Arnis Lapsa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-21 01:04:08

nodemon -x coffee server.coffee robi to dla mnie.

Install nodemon using npm install -g nodemon

 0
Author: code ninja,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-05 19:24:48