Skip to content

Commit

Permalink
Merge pull request #15579 from webpack/support-create-require
Browse files Browse the repository at this point in the history
add createRequire support
  • Loading branch information
sokra committed May 11, 2022
2 parents e2df0dd + c82dc1e commit 2738eeb
Show file tree
Hide file tree
Showing 26 changed files with 655 additions and 115 deletions.
4 changes: 4 additions & 0 deletions declarations/WebpackOptions.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2929,6 +2929,10 @@ export interface JavascriptParserOptions {
* Enable/disable parsing of magic comments in CommonJs syntax.
*/
commonjsMagicComments?: boolean;
/**
* Enable/disable parsing "import { createRequire } from "module"" and evaluating createRequire().
*/
createRequire?: boolean | string;
/**
* Specifies global mode for dynamic import.
*/
Expand Down
13 changes: 9 additions & 4 deletions lib/config/defaults.js
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,8 @@ const applyWebpackOptionsDefaults = options => {
syncWebAssembly: options.experiments.syncWebAssembly,
asyncWebAssembly: options.experiments.asyncWebAssembly,
css: options.experiments.css,
futureDefaults
futureDefaults,
isNode: targetProperties && targetProperties.node === true
});

applyOutputDefaults(options.output, {
Expand Down Expand Up @@ -451,11 +452,12 @@ const applySnapshotDefaults = (snapshot, { production, futureDefaults }) => {
* @param {JavascriptParserOptions} parserOptions parser options
* @param {Object} options options
* @param {boolean} options.futureDefaults is future defaults enabled
* @param {boolean} options.isNode is node target platform
* @returns {void}
*/
const applyJavascriptParserOptionsDefaults = (
parserOptions,
{ futureDefaults }
{ futureDefaults, isNode }
) => {
D(parserOptions, "unknownContextRequest", ".");
D(parserOptions, "unknownContextRegExp", false);
Expand All @@ -473,6 +475,7 @@ const applyJavascriptParserOptionsDefaults = (
D(parserOptions, "dynamicImportMode", "lazy");
D(parserOptions, "dynamicImportPrefetch", false);
D(parserOptions, "dynamicImportPreload", false);
D(parserOptions, "createRequire", isNode);
if (futureDefaults) D(parserOptions, "exportsPresence", "error");
};

Expand All @@ -484,11 +487,12 @@ const applyJavascriptParserOptionsDefaults = (
* @param {boolean} options.asyncWebAssembly is asyncWebAssembly enabled
* @param {CssExperimentOptions} options.css is css enabled
* @param {boolean} options.futureDefaults is future defaults enabled
* @param {boolean} options.isNode is node target platform
* @returns {void}
*/
const applyModuleDefaults = (
module,
{ cache, syncWebAssembly, asyncWebAssembly, css, futureDefaults }
{ cache, syncWebAssembly, asyncWebAssembly, css, futureDefaults, isNode }
) => {
if (cache) {
D(module, "unsafeCache", module => {
Expand All @@ -507,7 +511,8 @@ const applyModuleDefaults = (

F(module.parser, "javascript", () => ({}));
applyJavascriptParserOptionsDefaults(module.parser.javascript, {
futureDefaults
futureDefaults,
isNode
});

A(module, "defaultRules", () => {
Expand Down

0 comments on commit 2738eeb

Please sign in to comment.