forked from pmmmwh/react-refresh-webpack-plugin
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfigs.js
More file actions
100 lines (94 loc) · 2 KB
/
Copy pathconfigs.js
File metadata and controls
100 lines (94 loc) · 2 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
96
97
98
99
100
const path = require('path');
const BUNDLE_FILENAME = 'main';
/**
* @param {number} port
* @returns {string}
*/
function getIndexHTML(port) {
return `
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Sandbox React App</title>
</head>
<body>
<div id="app"></div>
<script src="http://localhost:${port}/${BUNDLE_FILENAME}.js"></script>
</body>
</html>
`;
}
/**
* @param {boolean} esModule
* @returns {string}
*/
function getPackageJson(esModule = false) {
return `
{
"type": "${esModule ? 'module' : 'commonjs'}"
}
`;
}
/**
* @param {string} srcDir
* @returns {string}
*/
function getWDSConfig(srcDir) {
return `
const { DefinePlugin, ProgressPlugin } = require('webpack');
const ReactRefreshPlugin = require('@pmmmwh/react-refresh-webpack-plugin');
module.exports = {
mode: 'development',
context: '${srcDir}',
devtool: false,
entry: {
'${BUNDLE_FILENAME}': [
'${path.join(__dirname, 'fixtures/hmr-notifier.js')}',
'./index.js',
],
},
module: {
rules: [
{
test: /\\.jsx?$/,
include: '${srcDir}',
use: [
{
loader: '${require.resolve('babel-loader')}',
options: {
babelrc: false,
plugins: ['${require.resolve('react-refresh/babel')}'],
}
}
],
},
],
},
output: {
hashFunction: 'xxhash64',
},
plugins: [
new DefinePlugin({ __react_refresh_test__: true }),
new ProgressPlugin((percentage) => {
if (percentage === 1) {
console.log("Webpack compilation complete.");
}
}),
new ReactRefreshPlugin(),
],
resolve: {
alias: ${JSON.stringify(
{
...(WDS_VERSION === 4 && { 'webpack-dev-server': 'webpack-dev-server-v4' }),
...(WDS_VERSION === 6 && { 'webpack-dev-server': 'webpack-dev-server-v6' }),
},
null,
2
)},
extensions: ['.js', '.jsx'],
},
};
`;
}
module.exports = { getIndexHTML, getPackageJson, getWDSConfig };