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