Skip to content

Commit 4b36427

Browse files
authored
Allow RegExp --externals only for the CLI argument (#665)
* Allow RegExp --externals only for the CLI argument * Fix globals generation for regex externals * Fix comment description
1 parent 5f8ea9e commit 4b36427

1 file changed

Lines changed: 10 additions & 2 deletions

File tree

src/index.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -465,14 +465,20 @@ function createConfig(options, entry, format, writeMeta) {
465465
if (options.external === 'none') {
466466
// bundle everything (external=[])
467467
} else if (options.external) {
468-
external = external.concat(peerDeps).concat(options.external.split(','));
468+
external = external.concat(peerDeps).concat(
469+
// CLI --external supports regular expressions:
470+
options.external.split(',').map(str => new RegExp(str)),
471+
);
469472
} else {
470473
external = external
471474
.concat(peerDeps)
472475
.concat(Object.keys(pkg.dependencies || {}));
473476
}
474477

475478
let globals = external.reduce((globals, name) => {
479+
// Use raw value for CLI-provided RegExp externals:
480+
if (name instanceof RegExp) name = name.source;
481+
476482
// valid JS identifiers are usually library globals:
477483
if (name.match(/^[a-z_$][a-z0-9_$]*$/)) {
478484
globals[name] = name;
@@ -507,8 +513,10 @@ function createConfig(options, entry, format, writeMeta) {
507513

508514
const useTypescript = extname(entry) === '.ts' || extname(entry) === '.tsx';
509515

516+
const escapeStringExternals = ext =>
517+
ext instanceof RegExp ? ext.source : escapeStringRegexp(ext);
510518
const externalPredicate = new RegExp(
511-
`^(${external.map(escapeStringRegexp).join('|')})($|/)`,
519+
`^(${external.map(escapeStringExternals).join('|')})($|/)`,
512520
);
513521
const externalTest =
514522
external.length === 0 ? id => false : id => externalPredicate.test(id);

0 commit comments

Comments
 (0)