首页 > 解决方案 > 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 );
    }
  }

}

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

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

标签: laravelwebpacklaravel-mix

解决方案


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

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

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

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

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


推荐阅读