UNPKG

1.71 kBJavaScriptView Raw
1var BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPlugin;
2var path = require("path");
3var webpack = require("webpack");
4const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
5var WebpackNotifierPlugin = require("webpack-notifier");
6
7var PROD = JSON.parse(process.env.PROD || false);
8var BUNDLE_ANALYZER = JSON.parse(process.env.BUNDLE_ANALYZER || false);
9
10module.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 // Workaround for Webpack 4. See https://github.com/webpack/webpack/issues/6522#issuecomment-371120689
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
39if (BUNDLE_ANALYZER) {
40 module.exports.plugins.push(new BundleAnalyzerPlugin());
41}
42
43if (PROD) {
44 // https://webpack.js.org/concepts/mode/#mode-production
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}