-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwebpack.config.js
113 lines (106 loc) · 4.45 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
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
const path = require('path');
const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const webpack = require('webpack');
module.exports = {
mode: "development", // "production" | "development" | "none" // Chosen mode tells webpack to use its built-in optimizations accordingly.
entry: "./test/index.ts", // string | object | array // defaults to ./src
context: path.resolve(__dirname),
// Here the application starts executing
// and webpack starts bundling
output: {
// options related to how webpack emits results
path: path.resolve(__dirname, "dist"), // string
// the target directory for all output files
// must be an absolute path (use the Node.js path module)
filename: "bundle.js", // string // the filename template for entry chunks
library: "mini_dom", // string,
// the name of the exported library
libraryTarget: "umd", // universal module definition // the type of the exported library
/* Advanced output configuration (click to show) */
},
module: {
// configuration regarding modules
rules: [
// rules for modules (configure loaders, parser options, etc.)
{
test: /\.tsx?$/,
loader: 'ts-loader',
},
{
test: /\.jsx?$/,
include: [
path.resolve(__dirname, "src")
],
exclude: [
// path.resolve(__dirname, "app/demo-files")
path.resolve(__dirname, "node_modules")
],
loader: "babel-loader",
options: {
presets: [
'@babel/preset-env',
["@babel/preset-react", {
pragma: 'h',
}]
],
},
},
],
/* Advanced module configuration (click to show) */
},
resolve: {
// options for resolving module requests
// (does not apply to resolving to loaders)
modules: [
"node_modules",
path.resolve(__dirname, "app")
],
// directories where to look for modules
extensions: [".js", ".json", ".jsx", ".css", ".ts", ".tsx"],
// extensions that are used
alias: {
// // a list of module name aliases
// "lib": path.resolve(__dirname, "lib"),
// // alias "module" -> "new-module" and "module/path/file" -> "new-module/path/file"
// "only-module$": "new-module",
// // alias "only-module" -> "new-module", but not "only-module/path/file" -> "new-module/path/file"
// "module": path.resolve(__dirname, "app/third/module.js"),
// // alias "module" -> "./app/third/module.js" and "module/file" results in error
// // modules aliases are imported relative to the current context
},
plugins: [new TsconfigPathsPlugin({
configFile: path.resolve(__dirname, "tsconfig.json")
})]
/* alternative alias syntax (click to show) */
/* Advanced resolve configuration (click to show) */
},
devtool: "source-map", // enum // enhance debugging by adding meta info for the browser devtools
// source-map most detailed at the expense of build speed.
serve: { //object
port: 1337,
content: './dist',
// ...
},
// lets you provide options for webpack-serve
stats: "errors-only", // lets you precisely control what bundle information gets displayed
devServer: {
// contentBase: path.join(__dirname, 'dist'), // boolean | string | array, static file location
compress: true, // enable gzip compression
contentBase: path.join(__dirname, 'dist'),
historyApiFallback: true, // true for index.html upon 404, object for multiple paths
hot: true, // hot module replacement. Depends on HotModuleReplacementPlugin
https: false, // true for self-signed, object for cert authority
port: 3000,
inline: true,
// ...
},
plugins: [
new HtmlWebpackPlugin({
template: 'test/index.html'
}),
new webpack.HotModuleReplacementPlugin(),
],
// list of additional plugins
/* Advanced configuration (click to show) */
}