Skip to content

Commit 5c884d9

Browse files
committed
test: add tests for compileNodeModules config
1 parent c1636dd commit 5c884d9

File tree

2 files changed

+88
-2
lines changed

2 files changed

+88
-2
lines changed

packages/scripts/__tests__/config/WebpackConfigHelper.spec.ts

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,88 @@ describe('WebpackConfigHelper', () => {
232232
}
233233
});
234234

235+
test('does not set babel-loader for node_modules in dev mode per config', () => {
236+
const newProjectConfig = { ...projectConfig };
237+
newProjectConfig.compileNodeModules = {
238+
dev: false,
239+
prod: true,
240+
};
241+
const cwc = new WebpackConfigHelper(
242+
newProjectConfig.files[0],
243+
getConfigFromProjectAndServer(newProjectConfig, serverConfig),
244+
'/foo/bar',
245+
true
246+
);
247+
const modules = cwc.getModule();
248+
if (Array.isArray(modules.rules)) {
249+
const nmJsRules = findWpackIoBabelOnNm(modules);
250+
expect(nmJsRules).toHaveLength(0);
251+
} else {
252+
throw new Error('Module is not an array');
253+
}
254+
});
255+
test('does set babel-loader for node_modules in dev mode per config', () => {
256+
const newProjectConfig = { ...projectConfig };
257+
newProjectConfig.compileNodeModules = {
258+
dev: true,
259+
prod: false,
260+
};
261+
const cwc = new WebpackConfigHelper(
262+
newProjectConfig.files[0],
263+
getConfigFromProjectAndServer(newProjectConfig, serverConfig),
264+
'/foo/bar',
265+
true
266+
);
267+
const modules = cwc.getModule();
268+
if (Array.isArray(modules.rules)) {
269+
const nmJsRules = findWpackIoBabelOnNm(modules);
270+
expect(nmJsRules).toHaveLength(1);
271+
} else {
272+
throw new Error('Module is not an array');
273+
}
274+
});
275+
276+
test('does not set babel-loader for node_modules in prod mode per config', () => {
277+
const newProjectConfig = { ...projectConfig };
278+
newProjectConfig.compileNodeModules = {
279+
dev: true,
280+
prod: false,
281+
};
282+
const cwc = new WebpackConfigHelper(
283+
newProjectConfig.files[0],
284+
getConfigFromProjectAndServer(newProjectConfig, serverConfig),
285+
'/foo/bar',
286+
false
287+
);
288+
const modules = cwc.getModule();
289+
if (Array.isArray(modules.rules)) {
290+
const nmJsRules = findWpackIoBabelOnNm(modules);
291+
expect(nmJsRules).toHaveLength(0);
292+
} else {
293+
throw new Error('Module is not an array');
294+
}
295+
});
296+
test('does set babel-loader for node_modules in prod mode per config', () => {
297+
const newProjectConfig = { ...projectConfig };
298+
newProjectConfig.compileNodeModules = {
299+
dev: false,
300+
prod: true,
301+
};
302+
const cwc = new WebpackConfigHelper(
303+
newProjectConfig.files[0],
304+
getConfigFromProjectAndServer(newProjectConfig, serverConfig),
305+
'/foo/bar',
306+
false
307+
);
308+
const modules = cwc.getModule();
309+
if (Array.isArray(modules.rules)) {
310+
const nmJsRules = findWpackIoBabelOnNm(modules);
311+
expect(nmJsRules).toHaveLength(1);
312+
} else {
313+
throw new Error('Module is not an array');
314+
}
315+
});
316+
235317
test('obeys hasFlow & hasRect', () => {
236318
const cwc = new WebpackConfigHelper(
237319
projectConfig.files[0],

packages/scripts/__tests__/helpers/testUtils.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ export function getConfigFromProjectAndServer(
4545
pCfg: ProjectConfig,
4646
sCfg: ServerConfig
4747
): WebpackConfigHelperConfig {
48+
const compileNodeModules = pCfg.compileNodeModules ?? {
49+
dev: true,
50+
prod: true,
51+
};
4852
return {
4953
appName: pCfg.appName,
5054
type: pCfg.type,
@@ -66,8 +70,8 @@ export function getConfigFromProjectAndServer(
6670
externals: pCfg.externals,
6771
useBabelConfig: false,
6872
compileNodeModules: {
69-
dev: true,
70-
prod: true,
73+
dev: compileNodeModules.dev ?? true,
74+
prod: compileNodeModules.prod ?? true,
7175
},
7276
useReactJsxRuntime: true,
7377
};

0 commit comments

Comments
 (0)