From 4c1d3762b4f1a7239814d2b42018688da64e5582 Mon Sep 17 00:00:00 2001 From: Jason Miller Date: Fri, 19 Jun 2020 17:47:17 +0000 Subject: [PATCH 1/3] Allow RegExp --externals only for the CLI argument --- src/index.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/index.js b/src/index.js index a10ae135..0a0b4358 100644 --- a/src/index.js +++ b/src/index.js @@ -465,7 +465,10 @@ function createConfig(options, entry, format, writeMeta) { if (options.external === 'none') { // bundle everything (external=[]) } else if (options.external) { - external = external.concat(peerDeps).concat(options.external.split(',')); + external = external.concat(peerDeps).concat( + // CLI --external supports regular expressions: + options.external.split(',').map(str => new RegExp(str)), + ); } else { external = external .concat(peerDeps) @@ -507,8 +510,10 @@ function createConfig(options, entry, format, writeMeta) { const useTypescript = extname(entry) === '.ts' || extname(entry) === '.tsx'; + const escapeStringExternals = ext => + ext instanceof RegExp ? ext.source : escapeStringRegexp(ext); const externalPredicate = new RegExp( - `^(${external.map(escapeStringRegexp).join('|')})($|/)`, + `^(${external.map(escapeStringExternals).join('|')})($|/)`, ); const externalTest = external.length === 0 ? id => false : id => externalPredicate.test(id); From d0236f5657e746b373d0dba71a517b33ca550756 Mon Sep 17 00:00:00 2001 From: Jason Miller Date: Fri, 19 Jun 2020 18:05:11 +0000 Subject: [PATCH 2/3] Fix globals generation for regex externals --- src/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/index.js b/src/index.js index 0a0b4358..86a05b5d 100644 --- a/src/index.js +++ b/src/index.js @@ -476,6 +476,9 @@ function createConfig(options, entry, format, writeMeta) { } let globals = external.reduce((globals, name) => { + // Use raw/escaped value for CLI-provided RegExp externals: + if (name instanceof RegExp) name = name.source; + // valid JS identifiers are usually library globals: if (name.match(/^[a-z_$][a-z0-9_$]*$/)) { globals[name] = name; From 01e6a53f3d1a84671a57956b04fabeb90f8003b8 Mon Sep 17 00:00:00 2001 From: Jason Miller Date: Fri, 19 Jun 2020 17:13:43 -0400 Subject: [PATCH 3/3] Fix comment description --- src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.js b/src/index.js index 86a05b5d..4fcab00c 100644 --- a/src/index.js +++ b/src/index.js @@ -476,7 +476,7 @@ function createConfig(options, entry, format, writeMeta) { } let globals = external.reduce((globals, name) => { - // Use raw/escaped value for CLI-provided RegExp externals: + // Use raw value for CLI-provided RegExp externals: if (name instanceof RegExp) name = name.source; // valid JS identifiers are usually library globals: