Laravel Mix - 是否需要链接以确保执行顺序?

hun*_*tar 6 laravel webpack laravel-mix

TLDR;

您是否必须链接 Laravel Mix 方法来维护执行顺序?是否有任何异步方法会阻止使用以下非链接模式mix.scripts(); mix.js(); mix.sass();

我运行的几个测试表明我不需要链接。

一个例子

由于我们的 Laravel 应用程序是如何设置的,我们需要不止一个 Laravel Mix 设置。我们不是复制粘贴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 );
    }
  }

}
Run Code Online (Sandbox Code Playgroud)

目前,我们的代码更像是您在网络上看到的大多数示例。

mix
  .options()
  .webpackConfig()
  .styles()
  .styles()
  .scripts()
  .js()
  .sass();
Run Code Online (Sandbox Code Playgroud)

Olu*_*ule 2

laravel-mix抽象 webpack 的配置并动态生成webpack config

其API 实现的组织是使用具有流畅或可链接接口的构建器模式完成的。这使得为​​了产生特定的配置,只需要调用必须执行的步骤。

您需要确保webpack.mix.js模块中的代码可以正确导入

您需要注意自定义任务的顺序,例如copy,copyDirectory , combine, version。在 中v5.0.0自定义任务的运行对其异步性质没有任何影响。然而,即将发生的变化将确保它们按顺序运行

其他 API 方法可以按任意顺序调用。