Асинхронное выполнение команд Laravel Elixir

У меня возникли проблемы с Laravel Elixir и я не могу понять, в каком порядке выполняются вещи. Мне позволили поверить, что цепочка вызовов эликсира заставит их выполняться синхронно, но у меня были проблемы, когда в определенных обстоятельствах определенные команды, кажется, не выполняются или выполняются в порядке, который означает, что они не выполняются должным образом. .

Моя первая проблема заключалась в том, что файл dependencies.js никогда не версионировался функцией version(), пока я не поменял местами две функции scripts(), поэтому функция для dependencies.js работала второй.

Другая проблема заключается в том, что когда я запускаю задачи с помощью функции gulp, в большинстве случаев шрифты с потрясающими шрифтами копируются в каталог сборки. Однако при запуске gulp watch они часто опускаются.

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

Спасибо.

Вот мой код gulpfile.js:

mix.sass("app.scss", 'public/css/', {
        includePaths: [paths.bootstrap + 'stylesheets/']
    })
    .scripts([
        'js/app.js'
    ], 'public/js/app.js', paths.assets)
    .scripts([
        // paths.jquery + "dist/jquery.js",
        paths.bootstrap + "javascripts/bootstrap.js",
        paths.assets + "js/freelancer/classie.js",
        paths.assets + "js/freelancer/cbpAnimatedHeader.js",
        paths.assets + "js/freelancer/jqBootstrapValidation.js",
        paths.assets + "js/freelancer/contact_me.js",
        paths.assets + "js/freelancer/freelancer.js"
    ], 'public/js/dependencies.js', './')
    .version([
        'public/js/dependencies.js',
        'public/js/app.js',
        'public/css/app.css'])
    .copy(paths.bootstrap + 'fonts/bootstrap/**', 'public/build/fonts')
    .copy(paths.assets + 'fonts/font-awesome/', 'public/build/fonts');

person Simon    schedule 12.02.2015    source источник
comment
Я думаю, что Эликсир еще не реализует эту функцию. Взгляните на это: github. com/gulpjs/gulp/blob/master/docs/recipes/. Я думаю, вам придется взломать эликсир или использовать просто глоток, чтобы добиться того, чего вы хотите. Вы можете взять ингредиенты эликсира и использовать их вне эликсира.   -  person Blue Genie    schedule 22.03.2015
comment
Это потому, что gulp по умолчанию выполняет вещи синхронно, однако, если вы посмотрите на файл elixir package.json, вы увидите, что в нем есть последовательность выполнения. Используйте это для запуска ваших задач асинхронно.   -  person marblewraith    schedule 06.05.2015


Ответы (1)


Недавно Laravel Elixir был обновлен, и одна из первых вещей, о которых говорится в этой статье, — это порядок выполнения вещей.

Похоже, это была ошибка, исправленная в последней версии:

https://laravel-news.com/2015/07/laravel-elixir-version-3-is-released/

person Jamesking56    schedule 07.08.2015
comment
Большое спасибо. Казалось странным, что это не так, но, во-первых, отличные новости. - person Simon; 10.08.2015
comment
Я чувствую, что есть разница между (1) гарантией того, что задачи запускаются последовательно, и (2) гарантией того, что предыдущая задача будет завершена перед выполнением следующей в этой последовательности. Вполне возможно быть последовательным, но асинхронным. Elixir v3 гарантирует, что задачи выполняются последовательно, но AFAICT не обеспечивает синхронность, поэтому некоторые сборки могут по-прежнему давать сбои, в зависимости от настроек. - person Illya Moskvin; 16.05.2017