-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathchainWebpack.config.js
40 lines (33 loc) · 1.38 KB
/
chainWebpack.config.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
const path = require('path');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const ExtensionReloader = require('webpack-extension-reloader');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const isDevMode = process.env.NODE_ENV === 'development'
const backgroundMode = process.env.BACKGROUND_MODE;
const chainWebpack = config => {
if (backgroundMode === 'js') {
config.entry('background').add(path.resolve(__dirname, './src/background/index.js'));
}
config.entry('contentScripts').add(path.resolve(__dirname, './src/contentScripts/index.js'));
config.output.filename('[name].js');
config.plugins.delete('copy');
config.plugin('CopyWebpackPlugin').use(CopyWebpackPlugin, [[
{ from: 'src/assets', to: 'assets' },
{ from: 'src/manifest.json', to: 'manifest.json', flatten: true },
]]);
if (isDevMode) {
// development-mode
config.plugin('ExtensionReloader').use(ExtensionReloader, [{
contentScript: 'contentScripts',
background: 'background',
extensionPage: 'popup',
options: 'options',
}]);
config.plugin('CleanWebpackPlugin').use(CleanWebpackPlugin, [{
cleanAfterEveryBuildPatterns: ['*hot-update*'],
cleanStaleWebpackAssets: false,
}]);
}
config.optimization.clear();
}
module.exports = chainWebpack;