Подтвердить что ты не робот

Кофе script компиляция

Я ищу простейший возможный способ автоматически перекомпилировать кофейные скрипты в JS.

Чтение документации, но все еще есть проблемы, чтобы получить именно то, что я хочу.

Мне нужно посмотреть папку src/ для любых модификаций файлов *.coffee и скомпилировать их в конкатенированный файл javascript в lib/something.js.

Как-то нельзя комбинировать просмотр, компиляцию и объединение друг с другом.:/

4b9b3361

Ответ 1

Документация на кофе script служит примером для этого:

Наблюдайте за файлами за изменения и перекомпилируйте его каждый раз, когда файл сохраняется:

coffee --watch --compile experimental.coffee

Если у вас есть конкретный script, который вы хотите выполнить, вы можете использовать команду linux dnotify: http://linux.die.net/man/1/dnotify

dnotify --all src/ --execute=command

Изменить: У меня были некоторые проблемы с --execute частью dnotify - может быть ошибка, но это то, что я получил:

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

Выполняется команда компиляции каждый раз, когда файл был изменен.

Если вы добавили команду с амперсандом, например:

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

он будет запущен в отдельном процессе. Чтобы получить идентификатор процесса, вы можете использовать это:

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

И тогда вы можете убить процесс, используя что-то вроде этого:

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

Но если ваша цель (убить по имени процесса), вы можете сделать это более простым способом, используя:

killall dnotify

Ответ 2

Попробуйте дрожание

https://github.com/TrevorBurnham/jitter

Он отслеживает каталог файлов. coffee, и когда он обнаруживает, что файл был изменен, он автоматически перекомпилирует его в .js

jitter/path/to/coffee/dir/path/to/js/dir

Я пробовал это с помощью проекта с использованием coffescript и sencha touch, похоже, он работает очень хорошо. Не заботится о проблеме конкатенации, но она очень проста в использовании для тех, кому просто нужна автоматическая компиляция.

Ответ 3

Это помогло мне (-o выходной каталог, -j присоединиться к project.js, -cw скомпилировать и посмотреть каталог coffeescript на полной глубине):

coffee -o web/js -j project.js -cw coffeescript

Ответ 4

Ну coffee --watch имеет 2 основных недостатка:

  • Новые файлы, созданные после выполнения команды, не просматриваются
  • Требуется ручное инициирование, поэтому у вас есть шанс, что вы забудете сделать это, что не кажется более ярким, чем забыть скомпилировать перед вами git commit it

Решение, с которым я столкнулся, представляет собой довольно простой Bash script, который принимает coffee --watch еще несколько шагов, которые позволят отслеживать ваше рабочее дерево каталогов с момента входа в систему и автоматически компилироваться в JavaScript на каждый файл сохраняет/изменяет или создание нового файла:

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

Там может быть более элегантный способ сделать это, но эта реализация отлично работает =)

Ответ 6

find -type f | grep .coffee | xargs ls -t | head -n 1 | xargs coffee -cw

найдите последний модифицированный кофе script и поместите его в режим просмотра компиляции

Ответ 7

Будучи одним уровнем выше /src, это будет работать для всех файлов. coffee, независимо от глубины.

coffee -w -c src/

Ответ 8

Я нашел компилятор командной строки командной строки, который плохо подходит для сложных структур проекта.

Если вы и ваш процесс сборки так же нуждаетесь, как я, посмотрите Grunt - http://gruntjs.com/

Он позволяет создавать сложные процессы сборки - например, вы можете

  • конкатенировать кофе в новый файл (ы)
  • компиляции
  • объединить некоторые дополнительные JS
  • преуменьшать

Задачи могут быть нанизаны вместе, а файлы/папки с просмотром также могут быть настраиваемы.

Ответ 9

Короткий ответ на ваш вопрос заключается в том, что утилита coffee не была предназначена для этого; объединение просмотра файлов и конкатенации на самом деле довольно сложно. Ожидайте более сложные инструменты сборки для CoffeeScript в ближайшем будущем; до тех пор вы можете захотеть выполнить сборку своего проекта, написав Cakefile или Ruby Watchr script. Затем вы также можете использовать мини-классификацию, создание документации и все, что вам нужно для вашего конкретного проекта (не говоря уже о гарантии определенного порядка конкатенации).

Ответ 10

find `pwd` | grep .coffee | xargs coffee -w -c

попробуйте это в корневом каталоге приложения

Ответ 11

Изменено мнение о конкатенации.
Создал небольшой файл compiler.sh, который содержит:

dnotify -M src/ -e coffee -o lib/ -c src/ &
dnotify -M spec/ -e coffee -o lib/ -c spec/ &

Вид подходит для моих нужд.

Ответ 12

nodemon -x coffee server.coffee делает это для меня.

Установите nodemon с помощью npm install -g nodemon