1 | import { create as berunJs } from '@berun/berun'
|
2 | import presetReact from '../src/preset-react'
|
3 |
|
4 | test('Gets Webpack module rules configuration', () => {
|
5 | const berun = berunJs(presetReact)
|
6 | berun.webpack.toConfig()
|
7 |
|
8 | expect(
|
9 | berun.webpack.module
|
10 | .rule('main')
|
11 | .oneOf('image')
|
12 | .toConfig()
|
13 | ).toEqual({
|
14 | test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/],
|
15 | exclude: [/node_modules/],
|
16 | use: [
|
17 | {
|
18 | loader:
|
19 | '/Volumes/DATA/projects/berun/node_modules/url-loader/dist/cjs.js',
|
20 | options: {
|
21 | limit: 10000,
|
22 | name: 'static/media/[name].[hash:8].[ext]'
|
23 | }
|
24 | }
|
25 | ]
|
26 | })
|
27 |
|
28 | expect(
|
29 | berun.webpack.module
|
30 | .rule('main')
|
31 | .oneOf('compile')
|
32 | .toConfig()
|
33 | ).toEqual({
|
34 | test: /\.(js|jsx|ts|tsx)$/,
|
35 | include: ['/Volumes/DATA/projects/berun'],
|
36 | exclude: [/node_modules/],
|
37 | use: [
|
38 |
|
39 | {
|
40 | loader:
|
41 | '/Volumes/DATA/projects/berun/node_modules/babel-loader/lib/index.js',
|
42 | options: {
|
43 | babelrc: false,
|
44 | cacheDirectory: true,
|
45 | cacheCompression: false,
|
46 | compact: false,
|
47 | highlightCode: true,
|
48 | presets: ['@berun/babel-preset-react-app']
|
49 | }
|
50 | }
|
51 | ]
|
52 | })
|
53 |
|
54 | expect(
|
55 | berun.webpack.module
|
56 | .rule('main')
|
57 | .oneOf('static')
|
58 | .toConfig()
|
59 | ).toEqual({
|
60 | exclude: [
|
61 | /\.(css|scss|sass|js|jsx|mjs|ts|tsx)$/,
|
62 | /\.ejs$/,
|
63 | /\.html$/,
|
64 | /\.json$/,
|
65 | /node_modules/
|
66 | ],
|
67 | use: [
|
68 |
|
69 | {
|
70 | loader:
|
71 | '/Volumes/DATA/projects/berun/node_modules/file-loader/dist/cjs.js',
|
72 | options: {
|
73 | name: 'static/media/[name].[hash:8].[ext]'
|
74 | }
|
75 | }
|
76 | ]
|
77 | })
|
78 | })
|
79 |
|
80 | test('Gets Webpack production module rules configuration', () => {
|
81 | process.env.NODE_ENV = 'production'
|
82 | const berun = berunJs(presetReact)
|
83 | berun.webpack.toConfig()
|
84 |
|
85 | expect(
|
86 | berun.webpack.module
|
87 | .rule('main')
|
88 | .oneOf('image')
|
89 | .toConfig()
|
90 | ).toEqual({
|
91 | test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/],
|
92 | exclude: [/node_modules/],
|
93 | use: [
|
94 | {
|
95 | loader:
|
96 | '/Volumes/DATA/projects/berun/node_modules/url-loader/dist/cjs.js',
|
97 | options: {
|
98 | limit: 10000,
|
99 | name: 'static/media/[name].[hash:8].[ext]'
|
100 | }
|
101 | }
|
102 | ]
|
103 | })
|
104 |
|
105 | expect(
|
106 | berun.webpack.module
|
107 | .rule('main')
|
108 | .oneOf('compile')
|
109 | .toConfig()
|
110 | ).toEqual({
|
111 | test: /\.(js|jsx|ts|tsx)$/,
|
112 | include: ['/Volumes/DATA/projects/berun'],
|
113 | exclude: [/node_modules/],
|
114 | use: [
|
115 |
|
116 | {
|
117 | loader:
|
118 | '/Volumes/DATA/projects/berun/node_modules/babel-loader/lib/index.js',
|
119 | options: {
|
120 | babelrc: false,
|
121 | cacheDirectory: true,
|
122 | cacheCompression: true,
|
123 | compact: true,
|
124 | highlightCode: true,
|
125 | presets: ['@berun/babel-preset-react-app']
|
126 | }
|
127 | }
|
128 | ]
|
129 | })
|
130 |
|
131 | expect(
|
132 | berun.webpack.module
|
133 | .rule('main')
|
134 | .oneOf('static')
|
135 | .toConfig()
|
136 | ).toEqual({
|
137 | exclude: [
|
138 | /\.(css|scss|sass|js|jsx|mjs|ts|tsx)$/,
|
139 | /\.ejs$/,
|
140 | /\.html$/,
|
141 | /\.json$/,
|
142 | /node_modules/
|
143 | ],
|
144 | use: [
|
145 |
|
146 | {
|
147 | loader:
|
148 | '/Volumes/DATA/projects/berun/node_modules/file-loader/dist/cjs.js',
|
149 | options: {
|
150 | name: 'static/media/[name].[hash:8].[ext]'
|
151 | }
|
152 | }
|
153 | ]
|
154 | })
|
155 | })
|