ldc-le-gaulois-pro/webpack.mix.js
2022-09-08 11:36:15 +02:00

110 lines
2.3 KiB
JavaScript

const path = require('path');
const mix = require('laravel-mix');
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%",
};
mix.webpackConfig({
resolve: {
extensions: ["*", ".js", ".vue", ".ts"],
alias: {
"@": path.resolve("resources/assets"),
},
},
module: {
rules: [
{
test: /\.ts$/,
loader: "ts-loader",
options: {
appendTsSuffixTo: [/\.vue$/],
},
},
{
test: /\.vue$/,
loader: "vue-loader",
options: {
esModule: true,
},
},
],
},
});
mix.options({
fileLoaderDirs: {
images: `${assetDir}/images`,
fonts: `${assetDir}/fonts`,
},
postCss: [
require("postcss-discard-comments")({
removeAll: true,
}),
],
});
mix.clean({
cleanOnceBeforeBuildPatterns: [
"css/*",
"js/*",
"images/*",
"fonts/*",
"assets/*",
],
});
// BACKEND
mix.ts("resources/ts/back.ts", "public/js/back.js", {
transpileOnly: true,
})
.vue({
runtimeOnly: true,
extractStyles: true,
globalStyles: false,
})
.eslint({
fix: true,
extensions: ["js", "ts"],
})
.stylelint({
configFile: ".stylelintrc.json",
files: ["**/*.scss"],
})
.sass("resources/sass/back.scss", "public/css/back.css")
.polyfill(polyfill)
.version();
// FRONTEND
mix.ts("resources/ts/front.ts", "public/js/front.js", {
transpileOnly: true,
})
.vue({
runtimeOnly: true,
extractStyles: true,
globalStyles: false,
})
.eslint({
fix: true,
extensions: ["js", "ts"],
})
.stylelint({
configFile: ".stylelintrc.json",
files: ["**/*.scss"],
})
.sass("resources/sass/front.scss", "public/css/front.css")
.polyfill(polyfill)
.version();
// Copy Blade Images Assets
mix.copyDirectory("resources/assets", "public/assets");