From f8faa4b53299c422af2b92d02ccd7bb016e66332 Mon Sep 17 00:00:00 2001 From: William Swanson Date: Fri, 15 Feb 2019 05:39:22 -0800 Subject: [PATCH] Allow config files to contain non-default exports (#2673) Before, if a config file contained exports other than `default`, rollup would break. Now, it correctly ignores these irrelevant config-file exports. --- bin/src/run/loadConfigFile.ts | 7 ++++++- test/cli/samples/config-es6/rollup.config.js | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/bin/src/run/loadConfigFile.ts b/bin/src/run/loadConfigFile.ts index 8144b6dfd4c..53d1adbc1a6 100644 --- a/bin/src/run/loadConfigFile.ts +++ b/bin/src/run/loadConfigFile.ts @@ -10,6 +10,10 @@ interface NodeModuleWithCompile extends NodeModule { _compile(code: string, filename: string): any; } +function interopDefault(ex: T): T { + return ex && typeof ex === 'object' && 'default' in ex ? (ex as any).default : ex; +} + export default function loadConfigFile( configFile: string, commandOptions: any = {} @@ -33,6 +37,7 @@ export default function loadConfigFile( } return bundle.generate({ + exports: 'named', format: 'cjs' }); }) @@ -49,7 +54,7 @@ export default function loadConfigFile( delete require.cache[configFile]; - return Promise.resolve(require(configFile)) + return Promise.resolve(interopDefault(require(configFile))) .then(configFileContent => { if (typeof configFileContent === 'function') { return configFileContent(commandOptions); diff --git a/test/cli/samples/config-es6/rollup.config.js b/test/cli/samples/config-es6/rollup.config.js index 22bbdf2e99b..036e93d68b9 100644 --- a/test/cli/samples/config-es6/rollup.config.js +++ b/test/cli/samples/config-es6/rollup.config.js @@ -1,5 +1,7 @@ import replace from 'rollup-plugin-replace'; +export const ignoresNonDefaultExports = true + export default { input: 'main.js', output: {