laravel - 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();
解决方案
laravel-mix
抽象 webpack 的配置并动态生成webpack 配置。
其API 实现的组织是使用具有流畅或可链接接口的 Builder 模式完成的。这使得为了产生特定的配置,只需要调用必须执行的步骤。
您需要确保可以正确导入webpack.mix.js
模块中的代码。
您需要注意自定义任务的顺序,例如copy
,copyDirectory
, combine
, version
。在v5.0.0
中,自定义任务的运行对其异步性质没有任何影响。然而,即将发生变化以确保它们按顺序运行。
可以按任何顺序调用其他 API 方法。