]> BookStack Code Mirror - bookstack/blob - webpack.config.js
Merge branch 'master' of github.com:BookStackApp/BookStack
[bookstack] / webpack.config.js
1 const path = require('path');
2 const dev = process.env.NODE_ENV !== 'production';
3
4 const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
5
6 const config = {
7     mode: dev? 'development' : 'production',
8     entry: {
9         app: './resources/assets/js/index.js',
10         styles: './resources/assets/sass/styles.scss',
11         "export-styles": './resources/assets/sass/export-styles.scss',
12         "print-styles": './resources/assets/sass/print-styles.scss',
13     },
14     output: {
15         filename: '[name].js',
16         path: path.resolve(__dirname, 'public/dist')
17     },
18     module: {
19         rules: [
20             {
21                 test: /\.js$/,
22                 exclude: /(node_modules)/,
23                 use: {
24                     loader: 'babel-loader',
25                     options: {
26                         presets: ['@babel/preset-env']
27                     }
28                 }
29             },
30             {
31                 test: /\.scss$/,
32                 use: [{
33                     loader: 'file-loader',
34                     options: {
35                         name: '[name].css',
36                         context: './src/css/',
37                         outputPath: './',
38                         publicPath: 'public/'
39                     }
40                 }, {
41                     loader: 'extract-loader', options: {
42                         publicPath: '',
43                     }
44                 }, {
45                     loader: "css-loader", options: {
46                         sourceMap: dev
47                     }
48                 }, {
49                     loader: 'postcss-loader',
50                     options: {
51                         ident: 'postcss',
52                         sourceMap: dev,
53                         plugins: (loader) => [
54                             require('autoprefixer')(),
55                         ]
56                     }
57                 }, {
58                     loader: "sass-loader", options: {
59                         sourceMap: dev
60                     }
61                 }]
62             }
63         ]
64     },
65     plugins: []
66 };
67
68 if (dev) {
69     config['devtool'] = 'inline-source-map';
70 }
71
72 if (!dev) {
73     config.plugins.push(new UglifyJsPlugin());
74 }
75
76 module.exports = config;