1 | import Berun from '@berun/berun'
|
2 |
|
3 |
|
4 | require.resolve('babel-loader')
|
5 | require.resolve('@svgr/webpack')
|
6 | require.resolve('url-loader')
|
7 | require.resolve('file-loader')
|
8 |
|
9 |
|
10 |
|
11 |
|
12 | export const ruleParser = (berun: Berun, _) => {
|
13 | berun.webpack.module
|
14 | .rule('parser')
|
15 | .parser({ requireEnsure: false })
|
16 | .end()
|
17 | }
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 | export const ruleMjs = (berun: Berun, _) => {
|
27 | berun.webpack.module
|
28 | .rule('mjs')
|
29 | .test([/\.mjs$/])
|
30 | .include.add(/node_modules/)
|
31 | .end()
|
32 | .type('javascript/auto')
|
33 | .use('babel')
|
34 | .loader(require.resolve('babel-loader'))
|
35 | .options({
|
36 | babelrc: false,
|
37 | configFile: false,
|
38 | compact: false,
|
39 | presets: [
|
40 | require.resolve('@berun/babel-preset-react-app/dist/dependencies')
|
41 | ],
|
42 | cacheDirectory: true,
|
43 | cacheCompression: process.env.NODE_ENV === 'production',
|
44 | highlightCode: true,
|
45 | sourceMaps: false
|
46 | })
|
47 | }
|
48 |
|
49 |
|
50 |
|
51 |
|
52 |
|
53 |
|
54 | export const ruleMainImage = (berun: Berun, _) => {
|
55 | berun.webpack.module
|
56 | .rule('main')
|
57 | .oneOf('image')
|
58 | .test([/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/])
|
59 | .exclude.add(/node_modules/)
|
60 | .end()
|
61 | .use('url-loader')
|
62 | .loader(require.resolve('url-loader'))
|
63 | .options({ limit: 10000, name: 'static/media/[name].[hash:8].[ext]' })
|
64 | }
|
65 |
|
66 |
|
67 |
|
68 |
|
69 |
|
70 | export const ruleMainCompile = (berun: Berun, _) => {
|
71 | berun.webpack.module
|
72 | .rule('main')
|
73 | .oneOf('compile')
|
74 | .test(/\.(js|jsx|ts|tsx)$/)
|
75 | .include.merge([berun.options.paths.workspace])
|
76 | .end()
|
77 | .exclude.add(/node_modules/)
|
78 | .end()
|
79 | .use('babel')
|
80 | .loader(require.resolve('babel-loader'))
|
81 | .options({
|
82 |
|
83 | })
|
84 | }
|
85 |
|
86 |
|
87 |
|
88 |
|
89 |
|
90 |
|
91 |
|
92 |
|
93 | export const ruleMainStatic = (berun: Berun, _) => {
|
94 | berun.webpack.module
|
95 | .rule('main')
|
96 | .oneOf('static')
|
97 |
|
98 |
|
99 |
|
100 |
|
101 | .exclude.add(/\.(css|scss|sass|js|jsx|mjs|ts|tsx)$/)
|
102 | .add(/\.ejs$/)
|
103 | .add(/\.html$/)
|
104 | .add(/\.json$/)
|
105 | .add(/node_modules/)
|
106 | .end()
|
107 | .use('file')
|
108 | .loader(require.resolve('file-loader'))
|
109 | .options({
|
110 | name: 'static/media/[name].[hash:8].[ext]'
|
111 | })
|
112 | }
|
113 |
|
114 | export const ruleMainSvg = (berun: Berun, _) => {
|
115 | berun.webpack.module
|
116 | .rule('main')
|
117 | .oneOf('svg')
|
118 | .test(/\.svg$/)
|
119 | .exclude.add(/node_modules/)
|
120 | .end()
|
121 | .use('svgr')
|
122 | .loader(require.resolve('@svgr/webpack'))
|
123 | .end()
|
124 | .use('svgr')
|
125 | .loader(require.resolve('url-loader'))
|
126 | }
|