FleetCart/webpack.mix.js

60 lines
1.5 KiB
JavaScript
Raw Normal View History

2023-06-11 12:14:03 +00:00
const glob = require("glob");
const mix = require("laravel-mix");
const execSync = require("child_process").execSync;
require("laravel-mix-merge-manifest");
// compile admin and theme assets
let configs = glob.sync(
"{./Modules/*/webpack.mix.js,./Themes/*/webpack.mix.js}"
);
// compile admin assets only
// let configs = glob.sync("./Modules/*/webpack.mix.js");
// compile theme assets only
// let configs = glob.sync("./Themes/*/webpack.mix.js");
if (process.env.module !== undefined) {
let module =
process.env.module.charAt(0).toUpperCase() +
process.env.module.slice(1);
configs = [`./Modules/${module}/webpack.mix.js`];
}
if (process.env.theme !== undefined) {
let theme =
process.env.theme.charAt(0).toUpperCase() + process.env.theme.slice(1);
configs = [`./Themes/${theme}/webpack.mix.js`];
}
mix.setPublicPath("./")
.options({ processCssUrls: false })
.sourceMaps(true, "eval-source-map")
.mergeManifest();
let commands = [];
configs.forEach((config) => {
require(config);
let module = config.match(/Modules\/(\w+?)\//);
let theme = config.match(/Themes\/(\w+?)\//);
if (module !== null) {
commands.push(`php artisan module:publish ${module[1]}`);
}
if (theme !== null) {
commands.push(`php artisan stylist:publish ${theme[1]}`);
}
});
mix.after(() => {
commands.map((command) => {
execSync(command);
});
});