@@ -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 - z 0 - 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