-
Notifications
You must be signed in to change notification settings - Fork 1
/
webpack.release.js
88 lines (83 loc) · 2.86 KB
/
webpack.release.js
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
const path = require('path');
const glob = require("glob");
const TerserPlugin = require("terser-webpack-plugin");
const miniCss = require('mini-css-extract-plugin');
const RemovePlugin = require('remove-files-webpack-plugin');
const CopyPlugin = require("copy-webpack-plugin");
const ZipPlugin = require('zip-webpack-plugin');
const packagejson = require('./package.json');
module.exports = {
mode: 'production',
entry: './src/style.scss',
output: {
filename: '[name].css',
path: path.resolve(__dirname, './dist-release'),
clean: true
},
optimization: {
minimize: false,
minimizer: [new TerserPlugin({extractComments: false})]
},
module: {
rules: [
{
test: /\.(scss|css)$/,
use: [miniCss.loader, {
loader: "css-loader",
options: {
url: false,
},
}, 'sass-loader'],
}
],
},
plugins: [
new miniCss({
filename: 'dist/style.css',
}),
new RemovePlugin({
after: {
include: [
'./dist-release/main.css'
]
}
}),
new CopyPlugin({
patterns: [
{
from: "**/*.php",
filter: (filepath) => !filepath.includes('dist') && !filepath.includes('node_modules') && !filepath.includes('dist-release')
},
]
}),
new ZipPlugin({
// OPTIONAL: defaults to the Webpack output path (above)
// can be relative (to Webpack output path) or absolute
path: '../releases',
// OPTIONAL: defaults to the Webpack output filename (above) or,
// if not present, the basename of the path
filename: `dp-framework.${packagejson.version}.zip`,
// OPTIONAL: defaults to the identity function
// a function mapping asset paths to new paths
pathMapper: function(assetPath) {
// put all pngs in an `images` subdir
if (assetPath.endsWith('.png'))
return path.join(path.dirname(assetPath), 'images', path.basename(assetPath));
return assetPath;
},
exclude: [/\main.css$/],
// yazl Options
// OPTIONAL: see https://github.com/thejoshwolfe/yazl#addfilerealpath-metadatapath-options
fileOptions: {
mtime: new Date(),
mode: 0o100664,
compress: true,
forceZip64Format: false,
},
// OPTIONAL: see https://github.com/thejoshwolfe/yazl#endoptions-finalsizecallback
zipOptions: {
forceZip64Format: false,
},
})
],
};