Лучший способ объединить файлы JavaScript с зависимостями и выводить их как модуль?

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

В разработке я использую несколько файлов JS (один файл для каждого "объекта"). Эти файлы JS имеют несколько зависимостей друг от друга — некоторые зависят от других, и мне нужно сначала загрузить их. В настоящее время я использую RequireJS для загрузки каждого файла JS в правильном порядке, поэтому я определяю модуль для каждого файла. Хорошо и денди. Но теперь я хочу объединить все мои файлы JS в один большой файл JS, который сам должен быть модулем. Для этого я использую оптимизатор RequireJS r.js. Моя проблема:Каждый файл JS объединяется с большим файлом JS, но определение модуля для каждого объекта включено в него. У меня не один большой модуль в одном большом файле, а много модулей в одном большом файле.

После этого я попробовал grunt для конкатенации, который отлично работает, но игнорирует зависимости файлов. Он просто объединяет все файлы в алфавитном порядке, иначе мне придется жестко закодировать порядок в моем gruntfile.

Как это решить?

В качестве иллюстрации к моей проблеме: У меня есть следующие файлы (псевдокод):

FileA
- define FileA module
- depends on FileB
- FileA Logic

FileB
- define FileB module
- FileB Logic

И я хочу этот вывод:

LibFile
- define LibFile module
- FileB Logic, FileA Logic

Но я получаю это с r.js (определение модуля из FileA и FileB копируется):

LibFile
- define FileB module
- FileB Logic
- define FileA module
- depends on FileB
- FileA Logic

И я получаю это с grunt ( неправильный порядок):

LibFile
- FileA Logic
- FileB Logic

Может быть, эти вопросы немного глупы, но я просто не могу решить их с помощью инструментов, которые, кажется, все используют... Я также попробовал плагин grunt-requirejs. Но он выдает несколько ошибок, которые я не смог решить.

Спасибо, Пипо

9
задан leppie 7 June 2012 в 13:13
поделиться