aboutsummaryrefslogtreecommitdiff
path: root/webpack.config.js
blob: c087422723d32d234e39170b748ff370c0b2414b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
var path = require('path');
var webpack = require('webpack');
const CopyWebpackPlugin = require("copy-webpack-plugin");
const ForkTsCheckerWebpackPlugin = require("fork-ts-checker-webpack-plugin");

module.exports = {
    mode: 'development',
    entry: {
        bundle: ["./src/client/views/Main.tsx", 'webpack-hot-middleware/client?reload=true'],
        viewer: ["./src/debug/Viewer.tsx", 'webpack-hot-middleware/client?reload=true'],
        test: ["./src/debug/Test.tsx", 'webpack-hot-middleware/client?reload=true'],
        inkControls: ["./src/mobile/InkControls.tsx", 'webpack-hot-middleware/client?reload=true'],
        imageUpload: ["./src/mobile/ImageUpload.tsx", 'webpack-hot-middleware/client?reload=true'],
    },
    optimization: {
        noEmitOnErrors: true
    },
    devtool: "source-map",
    node: {
        fs: 'empty',
        module: 'empty',
        dns: 'mock',
        tls: 'mock',
        net: 'mock'
    },
    output: {
        filename: "[name].js",
        path: path.resolve(__dirname, "build"),
        publicPath: "/"
    },
    resolve: {
        extensions: ['.js', '.ts', '.tsx']
    },
    module: {
        rules: [
            {
                test: [/\.tsx?$/],
                use: [
                    { loader: 'ts-loader', options: { transpileOnly: true } }
                ]
            },
            {
                test: /\.scss|css$/,
                use: [
                    {
                        loader: "style-loader"
                    },
                    {
                        loader: "css-loader"
                    },
                    {
                        loader: "sass-loader"
                    }
                ]
            },
            {
                test: /\.(jpg|png|pdf)$/,
                use: [
                    {
                        loader: 'file-loader'
                    }
                ]
            },
            {
                test: /\.(png|jpg|gif)$/i,
                use: [
                    {
                        loader: 'url-loader',
                        options: {
                            limit: 8192
                        }
                    }
                ]
            }]
    },
    plugins: [
        new CopyWebpackPlugin([{ from: "deploy", to: path.join(__dirname, "build") }]),
        new ForkTsCheckerWebpackPlugin({
            tslint: true, useTypescriptIncrementalApi: true
        }),
        new webpack.optimize.OccurrenceOrderPlugin(),
        new webpack.HotModuleReplacementPlugin(),
    ],
    devServer: {
        compress: false,
        host: "localhost",
        contentBase: path.join(__dirname, 'deploy'),
        port: 4321,
        hot: true,
        https: false,
        overlay: {
            warnings: true,
            errors: true
        }
    }
};