Поскольку ответа нет, я должен сам найти решение, и вот оно.
В версии Laravel-elixir
(2.3.6) есть функция конкатенации для coffeescript
. Вы должны хранить coffeescript
файлов в каталоге resources/assets/coffee
. Затем следующий скрипт в gulpfile.js
сгенерирует один app.js
, который скомпилирует и объединит все кофейные скрипты в указанном параметре массива.
elixir(function(mix) {
mix.coffee(['app.coffee', 'collection.coffee']);
});
Таким образом, вам не нужно включать другие файлы coffeescript в основной файл coffeescript, как в Sprocket of Ruby on Rails.
Но все еще есть одна проблема: как потребовать все файлы coffeescript
в более чем одном каталоге. Эти файлы coffeescript также должны быть в порядке, чтобы их зависимости не нарушались. Затруднительно записывать каждое имя файла coffeescript для того, чтобы оно требовалось. Следующий скрипт может прекрасно решить эту проблему.
mix.coffee([
'lib/license.coffee',
'lib/*.coffee',
'app/app.coffee',
'app/config.coffee',
'app/*.coffee',
'collections/collection.coffee',
'collections/*.coffee',
'models/model.coffee',
'models/*.coffee',
'views/view.coffee',
'views/*.coffee',
'templates/*.coffee',
'application.coffee'
]);
mix.scripts(null, 'public/js/vendor.js', 'resources/assets/coffee/vendor');
Вы можете потребовать все файлы coffeescript в каталоге со знаком * (звездочка), например, 'models/*.coffee'
.
Вы также можете указать файл, который требуется сначала, прежде чем запрашивать все файлы в каталоге, по их имени файла, например 'models/model.coffee'
. Laravel-elixir достаточно умен, чтобы не компилировать и не объединять этот файл снова.
Вот так я решил проблему в своем вопросе.
person
Steve.NayLinAung
schedule
17.06.2015