Изменение задачи Laravel Gulp/Elixir `watch`

Я хочу использовать Эликсир Laravel вместе с Semantic UI в моем новом проекте.

В документах Semantic UI они предлагают, как включить свои gulp-задачи в gulpfile вашего текущего проекта. В Laravel предлагают (кратко) как расширить Эликсир. Но как я могу включить еще одну задачу gulp в команду watch?

В настоящее время я запускаю gulp watch watch-ui, но я хотел включить задачу watch-ui в watch. Является ли это возможным?

Это мой текущий gulpfile.js:

var gulp     = require('gulp');
var elixir   = require('laravel-elixir');
var semantic = {
  watch: require('./resources/assets/semantic/tasks/watch'),
  build: require('./resources/assets/semantic/tasks/build')
};

gulp.task('watch-ui', semantic.watch);
gulp.task('build-ui', semantic.build);

elixir(function(mix) {
  mix.task('build-ui');
});

person igorsantos07    schedule 17.09.2015    source источник


Ответы (2)


Если я правильно понял ваш вопрос, вы хотите что-то добавить в задачу Semantic UI. Однако они никогда не определяют задачу, а только функцию, которую вы можете назначить задаче.

Вы не можете ничего включать в задачу semantic watch, если только вы не хотите исправлять файлы, но вы можете добавить две задачи наблюдения и убедиться, что они обе выполняются.

Следующий код должен позволить вам делать то, что вам нужно:

var gulp     = require('gulp');
var elixir   = require('laravel-elixir');
var semantic = {
  watch: require('./resources/assets/semantic/tasks/watch'),
  build: require('./resources/assets/semantic/tasks/build')
};

// Define a task for the semantic watch function.
gulp.task('semantic-watch', semantic.watch);

// Define the main watch task, that is depended on the semantic-watch, this will run both watch tasks when you run this one.
gulp.task('watch', ['semantic-watch'], function() {
    // Do your own custom watch logic in here.
});

gulp.task('build-ui', semantic.build);

elixir(function(mix) {
  mix.task('build-ui');
});

Вы можете увидеть, как Semantic UI на самом деле определяет, что их watch задачи должны использовать функцию наблюдения, здесь: https://github.com/Semantic-Org/Semantic-UI/blob/master/gulpfile.js#L46

person Allan Kimmer Jensen    schedule 07.04.2016

Если вы имеете в виду можно ли добавить пользовательскую логику наблюдателя через Elixir API, то краткий ответ будет нет...

... но, поскольку Elixir является надстройкой над Gulp, вы можете изменить gulp.tasks напрямую для достижения того же результата: просто переименуйте задачу watch, которую определяет Elixir, во что-то другое, а затем создайте свою собственную watch задача, которая запускает как часы Elixir, так и часы Semantic UI:

gulp.tasks['watch-elixir'] = gulp.tasks.watch;

gulp.task('watch', ['watch-elixir', 'watch-ui']);


В самом Эликсире ближе всего к пользовательским наблюдателям вы можете получить второй аргумент mix.task(), который принимает набор путей к файлам для наблюдения и перезапускает задачу при изменении. Итак, хотя вы могли бы сделать что-то вроде...

mix.task('build-ui', './resources/assets/semantic/src/**/*')

... это вызовет полную перестройку при каждом изменении, что не то же самое, что более детальная задача watch, предоставляемая семантикой.

person Nick    schedule 09.04.2016