This repository has been archived by the owner on Feb 14, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
/
webpack.config.js
101 lines (98 loc) · 2.27 KB
/
webpack.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
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
96
97
98
99
100
101
const path = require('path');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
module.exports = {
devtool: 'source-map',
entry: {
index: './src/content/index.js',
index_purse: './src/content/index_purse.js',
event: './src/event/index.js',
popup: './src/popup/index.js',
options: './src/options/index.js'
},
output: {
filename: '[name].js',
path: path.resolve('dist'),
publicPath: '/',
},
resolve: {
extensions: ['.js', '.jsx', '.css', '.json'],
modules: ['node_modules'],
alias: {
"react": "preact/compat",
"react-dom/test-utils": "preact/test-utils",
"react-dom": "preact/compat", // Must be below test-utils
"react/jsx-runtime": "preact/jsx-runtime",
},
},
module: {
rules: [
{
test: /\.js|jsx?$/,
loader: 'babel-loader',
options: {
"presets": [
[
"@babel/preset-env",
{
"targets": {
"chrome": "68",
"firefox": "55"
}
}
],
"@babel/preset-react"
]
},
exclude: /(node_modules)/,
},
{
test: /\.css?$/,
use: [
"style-loader",
{
loader: "css-loader",
options: {
modules: {
localIdentName: "pio_[local]",
},
},
}
],
exclude: /(node_modules)/,
},
],
},
plugins: [
new CleanWebpackPlugin(),
new CopyWebpackPlugin({
patterns: [
'manifest.json',
{
from: 'src/popup/index.html',
to: 'popup.html',
},
{
from: 'src/options/index.html',
to: 'options.html',
},
{
// Polyfill for chrome -> firefox extension compatibility
from: 'node_modules/webextension-polyfill/dist/browser-polyfill.js',
},
// {
// from: 'src/scripts',
// to: 'scripts',
// },
{
from: 'src/styles',
to: 'styles',
},
{
from: 'icons',
to: 'icons',
},
],
}),
],
};