clipboard.js/webpack.config.js

46 lines
1.2 KiB
JavaScript

const pkg = require("./package.json");
const path = require("path");
const webpack = require("webpack");
const UglifyJSPlugin = require("uglifyjs-webpack-plugin");
const production = process.env.NODE_ENV === "production" || false;
const banner = `clipboard.js v${pkg.version}
https://clipboardjs.com/
Licensed MIT © Zeno Rocha`;
module.exports = {
entry: "./src/clipboard.js",
mode: "production",
output: {
filename: production ? "clipboard.min.js" : "clipboard.js",
path: path.resolve(__dirname, "dist"),
library: "ClipboardJS",
globalObject: "this",
libraryExport: "default",
libraryTarget: "umd",
},
module: {
rules: [{ test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" }],
},
optimization: {
minimize: production,
minimizer: [
new UglifyJSPlugin({
parallel: require("os").cpus().length,
uglifyOptions: {
ie8: false,
keep_fnames: false,
output: {
beautify: false,
comments: (node, { value, type }) =>
type == "comment2" && value.startsWith("!"),
},
},
}),
],
},
plugins: [new webpack.BannerPlugin({ banner })],
};