const path = require('path');
const dev = process.env.NODE_ENV !== 'production';
-const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
+const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const config = {
target: 'web',
mode: dev? 'development' : 'production',
entry: {
- app: './resources/assets/js/index.js',
- styles: './resources/assets/sass/styles.scss',
- "export-styles": './resources/assets/sass/export-styles.scss',
- "print-styles": './resources/assets/sass/print-styles.scss',
+ app: './resources/js/index.js',
+ styles: './resources/sass/styles.scss',
+ "export-styles": './resources/sass/export-styles.scss',
+ "print-styles": './resources/sass/print-styles.scss',
},
output: {
filename: '[name].js',
},
module: {
rules: [
- {
- test: /\.js$/,
- exclude: /(node_modules)/,
- use: {
- loader: 'babel-loader',
- options: {
- presets: ['@babel/preset-env']
- }
- }
- },
{
test: /\.scss$/,
- use: [{
- loader: 'file-loader',
- options: {
- name: '[name].css',
- context: './src/css/',
- outputPath: './',
- publicPath: 'public/'
- }
- }, {
- loader: 'extract-loader', options: {
- publicPath: '',
- }
- }, {
- loader: "css-loader", options: {
+ use: [
+ {
+ loader: MiniCssExtractPlugin.loader,
+ options: {}
+ },
+ {
+ loader: "css-loader", options: {
sourceMap: dev
}
- }, {
- loader: 'postcss-loader',
- options: {
- ident: 'postcss',
- sourceMap: dev,
- plugins: (loader) => [
- require('autoprefixer')(),
- ]
+ }, {
+ loader: "sass-loader", options: {
+ sourceMap: dev
+ }
}
- }, {
- loader: "sass-loader", options: {
- sourceMap: dev
- }
- }]
+ ]
}
]
},
- plugins: []
+ plugins: [
+ new MiniCssExtractPlugin({
+ filename: "[name].css",
+ }),
+ ]
};
if (dev) {
config['devtool'] = 'inline-source-map';
}
-if (!dev) {
- config.plugins.push(new UglifyJsPlugin());
-}
-
module.exports = config;
\ No newline at end of file