Компилировать и объединять файлы coffeescript

У меня есть следующая структура:

/lib
  / myfile.js.cofee
  / secondfile.js
/src

и я хотел бы собрать их в

/lib
  / myfile.js.cofee
  / secondfile.js
/src
  / awesomefile.min.js

Я читал о Cakefiles, но я не уверен, как именно это сделать.

Спасибо майк

2 ответа

Решение

Если вы используете что-то на основе connect (например, экспресс), я бы порекомендовал использовать connect-assets. Если нет, то хрюк может быть хорошей ставкой, как было предложено ранее. Если вы хотите сделать это самостоятельно, используя Cakefile Вот один из подходов, который вы можете использовать:

Обратите внимание, что соглашение заключается в сборке из src в lib (что противоположно тому, что вы указали в вопросе). Я буду использовать это соглашение ниже, но вы можете легко переключить его обратно, если это необходимо.

$ npm install snockets

поместите следующее в src/awesomefile.coffee:

#= require secondfile.js
#= require myfile.js.coffee

создать Cakefile со следующим:

fs = require 'fs'
Snockets = require 'snockets'

NAME = 'awesomefile'
INPUT_FILE = "src/#{NAME}.coffee"
OUTPUT_FILE = "lib/#{NAME}.min.js"

task 'build', 'Build lib/ from src/', ->
  snockets = new Snockets()
  js = snockets.getConcatenation INPUT_FILE, async: false, minify: true
  fs.writeFileSync OUTPUT_FILE, js

task 'clean', "remove #{OUTPUT_FILE}", ->
  fs.unlinkSync OUTPUT_FILE

Теперь вы можете просто сделать:

$ cake build

и это создаст lib/awesomefile.min.js,

Вы можете иметь файлы в src отслеживать их собственные зависимости, или вы можете перечислить порядок, который будет включен в один файл, как я сделал выше. Для получения дополнительной информации вы можете проверить репозиторий Snockets. Также обратите внимание, что глава главы "Маленькая книга о CoffeeScript", посвященная компиляции, является хорошим источником для изучения файлов тортов.

Не может быть точный ответ, который вы ожидали.

Grunt.js на www.gruntjs.com - очень полезный buildtool и, конечно, включает в себя множество вещей, которые вам нужно делать ежедневно с веб-проектом.

Другие вопросы по тегам