22
33let generateTranspiler = require ( "./babel" ) ;
44let { requireOptional } = require ( "../util" ) ;
5+ let determineBrowserslist = require ( "faucet-pipeline/lib/util/browserslist" ) ;
56let commonjs = require ( "rollup-plugin-commonjs" ) ;
67let nodeResolve = require ( "rollup-plugin-node-resolve" ) ;
78
@@ -24,7 +25,8 @@ module.exports = generateConfig;
2425// exports (if any)
2526// * `esnext`, if truthy, activates ESNext transpilation
2627// * `esnext.browserslist`, if `false`, suppresses automatic configuration
27- // via Browserslist
28+ // via Browserslist - alternatively, a path to a directory containing a
29+ // custom Browserslist configuration
2830// * `esnext.exclude` is a list of modules for which to skip transpilation
2931// (e.g. `esnext: { exclude: ["jquery"] }`, perhaps due to a distribution
3032// already optimized for ES5)
@@ -37,7 +39,8 @@ module.exports = generateConfig;
3739// * `compact`, if truthy, compresses the bundle's code while retaining the
3840// source code's original structure
3941function generateConfig ( { extensions = [ ] , // eslint-disable-next-line indent
40- externals, format, moduleName, esnext, jsx, typescript, compact } , { browsers } ) {
42+ externals, format, moduleName, esnext, jsx, typescript, compact } ,
43+ { browsers, resolvePath } ) {
4144 let plugins = [ ] ;
4245 if ( esnext || jsx ) {
4346 let transpiler = Object . assign ( { } , esnext , jsx ) ;
@@ -48,8 +51,16 @@ function generateConfig({ extensions = [], // eslint-disable-next-line indent
4851 delete transpiler . pragma ; // just to be safe, clean up JSX-specifics
4952 transpiler . jsx = jsx ;
5053 }
51- if ( transpiler . browserslist === false ) { // TODO: support for custom path
54+
55+ let { browserslist } = transpiler
56+ if ( browserslist === false ) {
5257 browsers = null ;
58+ } else if ( browserslist ) {
59+ let dir = resolvePath ( browserslist , { enforceRelative : true } ) ;
60+ browsers = determineBrowserslist ( dir ) ;
61+ if ( ! browsers ) {
62+ throw new Error ( `failed to detect Browserslist in ${ browserslist } ` ) ;
63+ }
5364 }
5465
5566 let { plugin, extensions : ext } = generateTranspiler ( transpiler , { browsers } ) ;
0 commit comments