47 lines
1.3 KiB
JavaScript
47 lines
1.3 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 })]
|
|
};
|