-
Notifications
You must be signed in to change notification settings - Fork 0
/
webpack.config.js
85 lines (81 loc) · 2.52 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
const path = require("path");
const webpack = require("webpack");
const envisage = require("envisage");
const TerserPlugin = require("terser-webpack-plugin");
const config = {
target: "web",
mode: null,
entry: null,
devtool: false, // "source-map"
output: {
path: null,
filename: null,
// globalObject: `(typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : typeof global !== 'undefined' ? global : typeof this !== 'undefined' ? this : undefined)`,
libraryTarget: "umd"
// umdNamedDefine: true
},
resolve: {
modules: [path.join(__dirname, "src"), "node_modules"],
extensions: [".js", ".json"],
alias: {
// "geotiff": path.resolve(__dirname, './node_modules/geotiff/dist-module/geotiff.js'),
// "geotiff-tile": path.resolve(__dirname, './node_modules/geotiff-tile/dist/web/geotiff-tile.min.js'),
}
},
module: {
rules: [
{
test: /\.js/,
loader: "babel-loader",
exclude: modulePath => {
const excluded =
/node_modules/.test(modulePath) &&
!/node_modules\/webpack-dev-server/.test(modulePath) &&
!/node_modules\/map-obj/.test(modulePath) &&
!modulePath.includes("microlink");
// if (excluded) console.log("excluding:", modulePath);
return excluded;
},
options: {
presets: [
[
"@babel/preset-env",
{
targets: {
ie: 11
}
}
]
],
plugins: ["@babel/plugin-transform-runtime", "@babel/plugin-transform-nullish-coalescing-operator", "@babel/plugin-transform-optional-chaining"],
// prevent https://github.com/babel/babel/issues/12731
sourceType: "unambiguous"
}
},
{
test: path.resolve(__dirname, "node_modules/node-fetch/browser.js"),
use: "null-loader"
}
].filter(Boolean)
},
stats: {
colors: true,
chunks: true
},
plugins: [
new webpack.optimize.LimitChunkCountPlugin({
maxChunks: 1
})
],
node: {},
optimization: {
minimizer: [new TerserPlugin({ extractComments: false })]
}
};
// inject environmental variables
envisage.assign({ prefix: "WEBPACK", target: config });
if (!config.entry) throw new Error("no entry");
if (!config.mode) throw new Error("no mode");
if (!config.output.filename) throw new Error("no output.filename");
if (!config.output.path) throw new Error("no output.path");
module.exports = config;