Laravel-Mix条件编译



我有一个Laravel项目,我想添加一些条件行。项目根文件夹中名为module_statuses.json的文件包含json变量。

{
"Module1": true,
"Module2": true,
"Module3": false
}

与这些布尔JSON变量相关,我想在webpack.mix.js文件的末尾添加/更新一些行,如下所示。

const mix = require('laravel-mix');
const tailwindcss = require("tailwindcss");
require('laravel-mix-merge-manifest');
mix.options({
terser: {
extractComments: false,
}
})
mix.js('resources/js/app.js', 'public/js')
.vue()
// These 2 lines should be conditional from module_statuses.json ///////
.js('Modules/Module1/src/Resources/assets/js/module1.js', 'public/js')
.js('Modules/Module2/src/Resources/assets/js/module2.js', 'public/js')
.extract()
.sass("resources/sass/app.scss", "public/css")
.copy(
'node_modules/@fortawesome/fontawesome-free/webfonts',
'public/webfonts'
)
.options({
processCssUrls: false,
postCss: [tailwindcss("./tailwind.config.js")],
})
.version();

如何使这些行具有条件?知道吗?

首先,要求您的JSON文件访问变量及其值。然后你可以像下面这样简单地引用它们。

const mix = require('laravel-mix');
const tailwindcss = require('tailwindcss');
const status = require('./module_statuses');
require('laravel-mix-merge-manifest');
mix.options({
terser: {
extractComments: false,
}
})
mix.js('resources/js/app.js', 'public/js')
.vue()
if (status.Module1) {
mix.js('Modules/Module1/src/Resources/assets/js/module1.js', 'public/js')
}
if (status.Module2) {
mix.js('Modules/Module2/src/Resources/assets/js/module2.js', 'public/js')
}
mix.extract()
.sass('resources/sass/app.scss', 'public/css')
.copy('node_modules/@fortawesome/fontawesome-free/webfonts','public/webfonts')
.options({
processCssUrls: false,
postCss: [tailwindcss('tailwind.config.js')],
})
.version();

最新更新