UNPKG

2.84 kBJavaScriptView Raw
1const webpack = require('webpack');
2const path = require('path');
3const Clean = require('clean-webpack-plugin');
4const StringReplacePlugin = require('string-replace-webpack-plugin');
5const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
6const fs = require('fs');
7const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
8
9module.exports = {
10 mode: 'production',
11 cache: true,
12 entry: {
13 'main': path.join(__dirname, '/src/tablefilter.js')
14 },
15 output: {
16 path: path.join(__dirname, '/dist/tablefilter'),
17 filename: 'tablefilter.js',
18 chunkFilename: 'tf-[name]-[chunkhash].js',
19 libraryTarget: 'umd'
20 },
21 resolve: {
22 extensions: ['.js'],
23 alias: {
24 sortabletable: '../../../libs/sortabletable.js'
25 }
26 },
27 module: {
28 rules: [
29 {
30 test: path.join(__dirname, 'src'),
31 exclude: /tablefilter\/node_modules/,
32 options: {
33 compact: false,
34 presets: ['@babel/env']
35 },
36 loader: 'babel-loader'
37 }, {
38 test: path.join(__dirname, 'src'),
39 loader: StringReplacePlugin.replace({
40 replacements: [{
41 pattern: /{VERSION}/ig,
42 replacement: function (/*match, p1, offset, string*/) {
43 return pkg.version;
44 }
45 },{
46 pattern: /{AUTHOR}/ig,
47 replacement: function () {
48 return pkg.author.name;
49 }
50 }]
51 })
52 }
53 ]
54 },
55 devtool: 'source-map',
56 optimization: {
57 minimizer: [
58 new UglifyJsPlugin({
59 sourceMap: true,
60 uglifyOptions: {
61 beautify: false,
62 compress: {warnings: false},
63 comments: false,
64 keep_fnames: true
65 }
66 })
67 ]
68 },
69 plugins: [
70 new Clean({
71 cleanOnceBeforeBuildPatterns: [path.join(process.cwd(), 'dist')]
72 }),
73 new webpack.optimize.AggressiveMergingPlugin(),
74 new StringReplacePlugin(),
75 new webpack.optimize.MinChunkSizePlugin({
76 minChunkSize: 10000
77 }),
78 new webpack.BannerPlugin({
79 banner: '/** \n' +
80 ' *\t '+pkg.name+' v'+pkg.version+' by '+pkg.author.name+'\n' +
81 ' *\t build date: '+ new Date().toISOString() +' \n' +
82 ' *\t MIT License \n' +
83 ' */ \n',
84 raw: true
85 })
86 ]
87};