Laravel Mix - Требуется ли цепочка для обеспечения выполнения заказа? - PullRequest
3 голосов
/ 01 апреля 2020

TLDR;

Нужно ли связывать Laravel Методы Mix, чтобы поддерживать порядок выполнения? Существуют ли какие-либо методы asyn c, которые не позволили бы использовать следующий шаблон, не связанный с цепочкой, mix.scripts(); mix.js(); mix.sass();?

Несколько тестов, которые я выполнил, показывают, что мне не нужно связывать.

Пример

Из-за того, как настроено наше приложение Laravel, нам нужно иметь более одной Laravel настройки Mix. Вместо копирования-n-вставки файла webpack.mix.js и изменения нескольких строк здесь и там в каждом файле, мы смотрим на создание объекта конфигурации, который передается в отдельный файл webpack.mix.js. В этом файле мы проверим, настроены ли разные вещи, и, если это так, запустим соответствующий метод Mix. Ниже приведен пример псевдокода.

if ( config.js ) {
  mix.js( config.js.src, config.js.dist );
}

if ( config.sass ) {
  mix.sass( config.sass.src, config.sass.dist );
}

if ( config.concat ) {

  if ( config.concat.styles ) {

    // Could be more than one set of files that need to be combined, so array.
    config.concat.styles.map( ( files ) => {
      mix.styles( files.src, files.dist );
    }
  }

  if ( config.concat.scripts ) {

    // Could be more than one set of files that need to be combined, so array.
    config.concat.scripts.map( ( files ) => {
      mix.scripts( files.src, files.dist );
    }
  }

}

В настоящее время наш код больше похож на большинство примеров, которые вы видите в Интернете.

mix
  .options()
  .webpackConfig()
  .styles()
  .styles()
  .scripts()
  .js()
  .sass();

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

laravel-mix обобщает конфигурацию веб-пакета и динамически генерирует конфигурацию веб-пакета .

Организация его реализации API выполняется с использованием шаблона Builder с свободный или цепной интерфейс . Это делает его таким, что для создания конкретной конфигурации должны вызываться только те шаги, которые необходимо выполнить.

Необходимо убедиться, что код в вашем webpack.mix.js модуле может быть правильно импортирован .

Необходимо соблюдать осторожность при заказе пользовательских задач, таких как copy, copyDirectory, combine, version. В v5.0.0, пользовательские задачи выполняются без какого-либо влияния на их асинхронный характер. Однако есть изменения, чтобы убедиться, что они выполняются последовательно .

Другие методы API могут вызываться в любом порядке.

0 голосов
/ 15 апреля 2020

Несколько тестов, которые я провел, показывают, что мне не нужно цепляться.

Вы абсолютно правы!

Laravel Mix написано в JavaScript и использует Метод цепочки .

Вы можете визуализировать выполнение кода с помощью OnlinePythonTutor .

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

class Person {
  setName(name) {
    this.name = name
    return this
  }
  setAge(age) {
    this.age = age
    return this
  }
}

var p = new Person()
p.setName("Alice").setAge(42) // Set name before age
p.setName("Bob") // Set name
p.setAge(42) // Set age

Этот код можно визуализировать здесь

...