const path = require('path') const mix = require('laravel-mix') require('laravel-mix-polyfill') require('laravel-mix-clean') 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'), '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 } }, ], }, // 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: [ 'css/*', 'js/*', 'assets/*', ] }) // mix Backend mix.ts('resources/ts/app.ts', 'public/js/app.js', { transpileOnly: true }) .vue({ runtimeOnly: true, extractStyles: true, globalStyles: false }) .sass('resources/sass/app.scss', 'public/css') .polyfill(polyfill) .version() .sourceMaps(true, 'inline-source-map') // Copy Blade Images Assets mix.copyDirectory('resources/assets', 'public/assets')