-
Notifications
You must be signed in to change notification settings - Fork 26
Expand file tree
/
Copy pathwebpack.config.mjs
More file actions
95 lines (91 loc) · 2.66 KB
/
webpack.config.mjs
File metadata and controls
95 lines (91 loc) · 2.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import {CleanWebpackPlugin} from 'clean-webpack-plugin';
import CompressionPlugin from 'compression-webpack-plugin';
import dateFormat from 'dateformat';
import MiniCssExtractPlugin from 'mini-css-extract-plugin';
import path from 'path';
import {fileURLToPath} from 'url';
import webpack from 'webpack';
import _package from './package.json' assert {type: 'json'};
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const now = new Date(),
timestamp = dateFormat(now, 'isoDateTime'),
year = dateFormat(now, 'yyyy');
export default {
plugins: [
new CleanWebpackPlugin(),
new webpack.BannerPlugin({
banner: `@license ${_package.name} v${_package.version}, ${timestamp}
(c) ${year} ${_package.author.name} <${_package.author.email}>
License: ${_package.license}`
})
].concat([
new MiniCssExtractPlugin({
filename: 'angular-iscroll.css',
}),
new CompressionPlugin({
test: /\.js(\?.*)?$/i,
})
]),
name: 'library',
mode: process.env.NODE_ENV === 'production' ? 'production' : 'development',
//mode: 'development',
entry: './src/lib/angular-iscroll.js',
output: {
path: path.resolve(__dirname, 'dist/lib'),
filename: 'angular-iscroll.js',
library: 'angularIscroll',
libraryTarget: 'umd'
},
optimization: {
usedExports: true,
},
module: {
rules: [
{
test: /\.m?js$/,
exclude: /node_modules/,
use: [{
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env']
}
}]
},
{
test: /\.(sa|sc|c)ss$/,
/* Exclude fonts while working with images, e.g. .svg can be both image or font. */
exclude: /node_modules/,
use: [
{
loader: 'file-loader',
options: {
name: '[name].[ext]',
outputPath: 'scss/'
}
},
]
}
],
},
externals: {
lodash: {
commonjs: 'lodash',
commonjs2:
'lodash',
amd:
'lodash',
root:
'_',
},
angular: {
commonjs: 'angular',
commonjs2:
'angular',
amd:
'angular',
root:
'angular',
},
},
};