111 lines
2.9 KiB
JavaScript
Vendored
111 lines
2.9 KiB
JavaScript
Vendored
const path = require("path");
|
|
const mix = require("laravel-mix");
|
|
|
|
require("laravel-mix-artisan-publish");
|
|
require("laravel-mix-polyfill");
|
|
require("laravel-mix-clean");
|
|
require("laravel-mix-eslint");
|
|
require("laravel-mix-stylelint");
|
|
|
|
const assetDir = "build/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: {
|
|
"@Theme": path.resolve(`resources/theme/assets`),
|
|
"@": path.resolve("resources/assets"),
|
|
vue$: "vue/dist/vue.runtime.esm-bundler.js",
|
|
},
|
|
},
|
|
module: {
|
|
rules: [
|
|
{
|
|
test: /\.ts$/,
|
|
loader: "ts-loader",
|
|
options: {
|
|
appendTsSuffixTo: [/\.vue$/],
|
|
},
|
|
},
|
|
{
|
|
test: /\.vue$/,
|
|
loader: "vue-loader",
|
|
options: {
|
|
esModule: true,
|
|
comment: true
|
|
},
|
|
},
|
|
],
|
|
},
|
|
// Pour debug compilation errors
|
|
// stats: {
|
|
// children: true,
|
|
// warningsFilter: [/\-\-underline\-color/],
|
|
// },
|
|
});
|
|
|
|
mix.options({
|
|
fileLoaderDirs: {
|
|
fonts: `${assetDir}/fonts`,
|
|
images: `${assetDir}/images`,
|
|
},
|
|
postCss: [
|
|
require("postcss-discard-comments")({
|
|
removeAll: true,
|
|
}),
|
|
],
|
|
});
|
|
|
|
mix.clean({
|
|
cleanOnceBeforeBuildPatterns: [
|
|
"vendor/*",
|
|
"build/*"
|
|
],
|
|
});
|
|
|
|
// * COMMON
|
|
mix.vue({
|
|
runtimeOnly: true,
|
|
extractStyles: "build/css/v-extract.css",
|
|
globalStyles: false,
|
|
})
|
|
.eslint({
|
|
fix: true,
|
|
extensions: ["js", "ts"],
|
|
})
|
|
.stylelint({
|
|
configFile: ".stylelintrc.json",
|
|
files: ["**/*.scss"],
|
|
})
|
|
.polyfill(polyfill)
|
|
.version()
|
|
.sourceMaps(false, "inline-source-map")
|
|
|
|
// * FRONT compilation
|
|
.ts("resources/theme/ts/app.ts", "public/build/theme/js", { transpileOnly: true })
|
|
.sass("resources/theme/sass/app.scss", "public/build/theme/css")
|
|
|
|
// * BACK Engine compilation
|
|
.ts("resources/ts/app.ts", "public/build/back/js", { transpileOnly: true })
|
|
.sass("resources/sass/app.scss", "public/build/back/css");
|
|
|
|
mix.publish({
|
|
provider: "Alexusmai\\LaravelFileManager\\FileManagerServiceProvider",
|
|
tag: "fm-assets",
|
|
path: "artisan",
|
|
force: true,
|
|
});
|
|
|
|
// ! Écrasement possible des resources back par front.
|
|
// * Copy BACK resources
|
|
mix.copyDirectory("resources/assets/images", `public/build/assets/images`)
|
|
.copyDirectory("resources/assets/fonts", `public/build/assets/fonts`);
|
|
// * Copy FRONT resources
|
|
mix.copyDirectory("resources/theme/assets/images", `public/build/assets/images`)
|
|
.copyDirectory("resources/theme/assets/fonts", `public/build/assets/fonts`);
|