Объединяйте и уменьшайте шаблоны с помощью CoffeeScript / Cake - PullRequest
1 голос
/ 22 апреля 2011

У меня есть каталог src/templates/, полный шаблонов усов.Как мне объединить и минимизировать их содержимое, чтобы они были доступны для использования в моем приложении CoffeeScript?

Я уже следую указаниям на https://github.com/jashkenas/coffee-script/wiki/%5BHowTo%5D-Compiling-and-Setting-Up-Build-Tools для объединения и минимизации моего источника CoffeeScriptв JS.

1 Ответ

7 голосов
/ 24 апреля 2011

Прежде всего, я предполагаю, что ваши шаблоны экспортируются в глобальный объект (например, каждый из них делает window.userpane =, а не просто userpane =). Это самая важная вещь. Если вы делаете это, и вы успешно конкатенируете и компилируете, то единственное, что остается, - это автоматическое минификация после каждой конкатенации.

Краткий ответ: Пока еще нет хороших инструментов для этого. Ваш лучший вариант - расширить существующий Cakefile с помощью строки типа

fs.watchFile 'concatenated.js', ->
  exec 'uglifyjs concatenated.js'

(Чтобы установить UglifyJS , запустите npm install uglify-js.)

Теперь это не решит проблему обеспечения того, чтобы ваши сценарии были объединены в разумном порядке. (Например, если у вас есть window.templates = {} в файле A и templates.userpane = в файле B, то очень важно, чтобы файл A был объединен перед файлом B.) Для этого вы должны следить за Sprockets , который позволяет указать в верхней части каждого файла JS, каковы его зависимости, а затем объединить их в порядке, который учитывает эти зависимости. Создатель Sprockets, Сэм Стивенсон, является активным членом сообщества CoffeeScript, и первоклассная поддержка CoffeeScript в Sprockets появится в Sprockets 2 (репо здесь ).

Обновление: Вот задача Cake для фактического чтения и объединения всего в каталоге template:

templateJs = ''
files = fs.readdirSync 'template'
for file in files
  contents = fs.readFileSync file, 'utf8'
  name = file.replace /\..*/, '' # remove extension
  templateJs += "window.#{name} = '#{contents}';"

Затем добавьте в свой составной JS templateJs. Обратите внимание, что это предполагает, что в шаблоне нет одинарных кавычек ('). Либо ставьте обратную косую черту перед ними, либо последовательно используйте двойные кавычки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...