-
Notifications
You must be signed in to change notification settings - Fork 2
/
webpack.config.js
70 lines (64 loc) · 2.12 KB
/
webpack.config.js
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
const webpack = require("webpack");
const path = require("path");
const nodeExternals = require("webpack-node-externals");
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const extractCSS = new ExtractTextPlugin('stylesheets/[name].css');
module.exports = {
devServer: {
historyApiFallback: true,
},
// Enable sourcemaps for debugging webpack's output.
devtool: "source-map",
entry: [
"./src/index.tsx",
"webpack-dev-server/client?http://127.0.0.1:8080",
"webpack/hot/only-dev-server",
],
// When importing a module whose path matches one of the following, just
// assume a corresponding global variable exists and use that instead.
// This is important because it allows us to avoid bundling all of our
// dependencies, which allows browsers to cache those libraries between builds.
externals: {
"antd": "antd",
"d3": "d3",
"lodash": "_",
"moment": "moment",
"react": "React",
"react-dom": "ReactDOM",
"react-redux": "ReactRedux",
"react-router": "ReactRouter",
"react-router-redux": "ReactRouterRedux",
"redux": "Redux",
"redux-saga": "ReduxSaga",
"vega": "vg",
"vega-embed": "vg.embed",
"vega-lite": "vl",
},
module: {
loaders: [
// All files with a '.ts' or '.tsx' extension will be handled by 'ts-loader'.
{ test: /\.tsx?$/, loaders: ["react-hot-loader/webpack", "ts-loader"] },
{ test: /\.scss$/, loader: extractCSS.extract([ "css-loader", "sass-loader"]) },
{ test: /\.css$/, loader: extractCSS.extract(["css-loader"]) },
{ test: /\.(jpe?g|png|gif|svg|eot|woff|svg|ttf|json)/, loader: "file-loader" },
],
},
output: {
filename: "bundle.js",
publicPath: "http://127.0.0.1:8080/",
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new webpack.DefinePlugin({
"process.env.NODE_ENV": JSON.stringify("development"),
}),
extractCSS,
],
resolve: {
alias: {
src: path.join(__dirname, "/src"),
},
// Add '.ts' and '.tsx' as resolvable extensions.
extensions: [".webpack.js", ".web.js", ".ts", ".tsx", ".js"],
},
};