The commonjs plugin should transform only calls to a global function called “require”. Calls to functions containing the term ”require” (e.g. “myrequire”) and calling “require” on an object (e.g. “myObj.require”) must not be transformed.
Versions
Reproduction
Unit tests that check this would be:
test('require function on object', () => {
let code = `myObj.require("react");`
let result = transformRequire(code, 'main.ts');
expect(result.code).toMatch(`myObj.require("react");`);
});
test('require as part of function name', () => {
let code = `myrequire("react");`
let result = transformRequire(code, 'main.ts');
expect(result.code).toMatch(`myrequire("react");`);
});
Fix
To fix this issue, the RegEx that searches the require function should be changed to be like this:
const requireRegex: RegExp = /(?<!\.)\b_{0,2}require\s*\(\s*(["'].*?["'])\s*\)/g;
Find the tests and the proposed fix in this pull-request: #26