Кофе script компиляция
Я ищу простейший возможный способ автоматически перекомпилировать кофейные скрипты в JS.
Чтение документации, но все еще есть проблемы, чтобы получить именно то, что я хочу.
Мне нужно посмотреть папку src/
для любых модификаций файлов *.coffee
и скомпилировать их в конкатенированный файл javascript в lib/something.js
.
Как-то нельзя комбинировать просмотр, компиляцию и объединение друг с другом.:/
Ответы
Ответ 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
Там может быть более элегантный способ сделать это, но эта реализация отлично работает =)
Ответ 5
Ответ 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