1 | var BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPlugin;
|
2 | var path = require("path");
|
3 | var webpack = require("webpack");
|
4 | const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
|
5 | var WebpackNotifierPlugin = require("webpack-notifier");
|
6 |
|
7 | var PROD = JSON.parse(process.env.PROD || false);
|
8 | var BUNDLE_ANALYZER = JSON.parse(process.env.BUNDLE_ANALYZER || false);
|
9 |
|
10 | module.exports = {
|
11 | mode: "none",
|
12 | devtool: "source-map",
|
13 | entry: {
|
14 | "clipboard-polyfill": "./clipboard-polyfill.ts",
|
15 | "clipboard-polyfill.promise": ["./clipboard-polyfill.promise.ts"]
|
16 | },
|
17 | module: {
|
18 | rules: [
|
19 | { test: /\.ts$/, use: "ts-loader" }
|
20 | ]
|
21 | },
|
22 | output: {
|
23 | path: __dirname + "/build",
|
24 | filename: "[name].js",
|
25 | library: "clipboard",
|
26 | libraryTarget: "umd",
|
27 |
|
28 | globalObject: "typeof self !== \"undefined\" ? self : this"
|
29 | },
|
30 | resolve: {
|
31 | extensions: [".ts"],
|
32 | modules: ["node_modules"]
|
33 | },
|
34 | plugins: [
|
35 | new WebpackNotifierPlugin({alwaysNotify: true})
|
36 | ]
|
37 | };
|
38 |
|
39 | if (BUNDLE_ANALYZER) {
|
40 | module.exports.plugins.push(new BundleAnalyzerPlugin());
|
41 | }
|
42 |
|
43 | if (PROD) {
|
44 |
|
45 | module.exports.plugins.push(
|
46 | new UglifyJSPlugin({
|
47 | sourceMap: true,
|
48 | uglifyOptions: {
|
49 | mangle: false
|
50 | }
|
51 | })
|
52 | );
|
53 | module.exports.plugins.push(
|
54 | new webpack.DefinePlugin({"process.env.NODE_ENV": JSON.stringify("production")})
|
55 | );
|
56 | module.exports.plugins.push(
|
57 | new webpack.optimize.ModuleConcatenationPlugin()
|
58 | );
|
59 | module.exports.plugins.push(
|
60 | new webpack.NoEmitOnErrorsPlugin()
|
61 | );
|
62 | }
|