ldc-le-gaulois-pro/webpack.mix.js

101 lines
2.1 KiB
JavaScript
Raw Normal View History

2022-09-06 09:02:11 +00:00
const path = require('path');
2022-08-31 09:18:53 +00:00
const mix = require('laravel-mix');
2022-09-08 11:36:15 +02:00
require("laravel-mix-polyfill");
require("laravel-mix-clean");
require("laravel-mix-eslint");
require("laravel-mix-stylelint");
const assetDir = "assets";
const polyfill = {
enabled: true,
bugfixes: true,
useBuiltIns: "usage",
targets: "last 3 version, not dead, >0.3%",
};
2022-08-31 09:18:53 +00:00
2023-01-10 11:07:36 +01:00
mix.setPublicPath('public/build');
mix.setResourceRoot('/build');
2022-09-06 09:02:11 +00:00
mix.webpackConfig({
resolve: {
2022-09-08 11:36:15 +02:00
extensions: ["*", ".js", ".vue", ".ts"],
2022-09-06 09:02:11 +00:00
alias: {
2022-09-08 11:36:15 +02:00
"@": path.resolve("resources/assets"),
2022-11-29 14:47:07 +01:00
vue$: "vue/dist/vue.runtime.esm-bundler.js",
2022-09-08 11:36:15 +02:00
},
},
module: {
rules: [
{
test: /\.ts$/,
loader: "ts-loader",
options: {
appendTsSuffixTo: [/\.vue$/],
},
},
{
test: /\.vue$/,
loader: "vue-loader",
options: {
esModule: true,
},
},
],
2022-09-06 09:02:11 +00:00
},
});
2022-08-31 09:18:53 +00:00
2022-09-06 09:02:11 +00:00
mix.options({
fileLoaderDirs: {
2022-09-08 11:36:15 +02:00
fonts: `${assetDir}/fonts`,
2022-11-29 14:47:07 +01:00
images: `${assetDir}/images`
2022-09-06 09:02:11 +00:00
},
postCss: [
2022-09-08 11:36:15 +02:00
require("postcss-discard-comments")({
removeAll: true,
}),
],
});
mix.clean({
cleanOnceBeforeBuildPatterns: [
2023-01-10 11:07:36 +01:00
"css/*",
"js/*",
"assets/*",
2022-09-08 11:36:15 +02:00
],
2022-09-06 09:02:11 +00:00
});
2023-01-10 11:07:36 +01:00
// * COMMON
mix.vue({
2022-09-08 11:36:15 +02:00
runtimeOnly: true,
2023-01-10 12:09:23 +01:00
extractStyles: "css/v-extract.css",
2022-09-08 11:36:15 +02:00
globalStyles: false,
2022-09-06 09:02:11 +00:00
})
2022-09-08 11:36:15 +02:00
.eslint({
fix: true,
extensions: ["js", "ts"],
})
.stylelint({
configFile: ".stylelintrc.json",
files: ["**/*.scss"],
})
.polyfill(polyfill)
2022-09-15 17:03:21 +02:00
.version()
2023-01-10 11:07:36 +01:00
.sourceMaps(false, "inline-source-map")
2022-09-08 11:36:15 +02:00
2023-01-10 11:07:36 +01:00
// * BACKEND
.ts("resources/ts/back.ts", "js", {
transpileOnly: true,
2022-09-08 11:36:15 +02:00
})
2023-01-10 11:07:36 +01:00
.sass("resources/sass/back.scss", "css")
// * FRONTEND
.ts("resources/ts/front.ts", "js", {
transpileOnly: true,
2022-09-08 11:36:15 +02:00
})
2023-01-10 11:07:36 +01:00
.sass("resources/sass/front.scss", "css");
2022-09-06 09:02:11 +00:00
2023-01-10 11:07:36 +01:00
// * Copy Blade Images Assets
mix.copyDirectory("resources/assets", "public/build/assets");
2022-09-08 11:36:15 +02:00