-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwebpack.config.dev.js
68 lines (64 loc) · 2.06 KB
/
webpack.config.dev.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
const { compose, dissoc, evolve, adjust, set, lensProp } = require('ramda')
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin')
const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin')
const ReactRefreshTypeScript = require('react-refresh-typescript')
const webpackBuilder = require('./webpackBuilder')
const CONFIG_PATH = require('../../config/paths')
// get dev server config, envConfig, SSL flag and base webpack config from builder
const { devServerConfig, webpackConfig } = webpackBuilder({
allowUnsafeScripts: true,
allowUnsafeStyles: true,
extraPluginsList: [
new ReactRefreshWebpackPlugin(),
new ForkTsCheckerWebpackPlugin({
typescript: {
memoryLimit: 4096,
configFile: CONFIG_PATH.tsConfig
}
})
],
useDevServer: true,
useHMR: true
})
// evolve base config for fast dev mode and HMR
//
// IMPORTANT: if you want to add/override a base config property for only the local
// dev config, do it here! If you want to change something for all webpack
// configs (local dev, ci, debug:prod), then edit the config returned from buildWebpackConfig
const devWebpackConfig = evolve(
{
devtool: () => 'inline-source-map',
mode: () => 'development',
module: {
rules: compose(
// edits babel-loader config
adjust(0, (rule) => set(lensProp('use'), ['cache-loader', 'babel-loader'], rule)),
// next two `adjusts`, edit the ts-loader config
adjust(1, (rule) => dissoc('loader', rule)),
adjust(1, (rule) =>
set(
lensProp('use'),
[
{
loader: 'ts-loader',
options: {
getCustomTransformers: () => ({
before: [ReactRefreshTypeScript()]
}),
transpileOnly: true
}
}
],
rule
)
)
)
},
output: { path: () => CONFIG_PATH.appBuild }
},
webpackConfig
)
module.exports = {
...devWebpackConfig,
devServer: devServerConfig
}