Skip to content

Commit 533feeb

Browse files
Allow spread (...) to be used with "require"
Fixes issue mentioned here: originjs#26 (comment)
1 parent 568f5b7 commit 533feeb

2 files changed

Lines changed: 7 additions & 1 deletion

File tree

packages/vite-plugin-commonjs/__tests__/transform.spec.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,12 @@ test('require as part of function name', () => {
4444
expect(result.code).toMatch(`myrequire("react");`);
4545
});
4646

47+
test('require in object spread', () => {
48+
let code = `const messagesDE = {...require('./i18n/de')}`
49+
let result = transformRequire(code, 'main.ts');
50+
expect(result.code).not.toMatch(code);
51+
});
52+
4753
test('require in comments', () => {
4854
//singleline comments
4955
let code = ` const a=0; // the hook will be setup by require("react").`

packages/vite-plugin-commonjs/src/lib.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const commonJSRegex: RegExp = /\b(module\.exports|exports\.\w+|exports\s*=\s*|exports\s*\[.*\]\s*=\s*)/;
2-
const requireRegex: RegExp = /(?<!\.)\b_{0,2}require\s*\(\s*(["'`].*?["'`])\s*\)/g;
2+
const requireRegex: RegExp = /(?<![^\.]\.)\b_{0,2}require\s*\(\s*(["'`].*?["'`])\s*\)/g;
33
const IMPORT_STRING_PREFIX: String = "__require_for_vite";
44
const multilineCommentsRegex = /\/\*(.|[\r\n])*?\*\//gm
55
const singleCommentsRegex = /([^\:])\/\/.*/g

0 commit comments

Comments
 (0)