diff --git a/cli/run/loadConfigFile.ts b/cli/run/loadConfigFile.ts index cbebf4d8c62..da7a911fc95 100644 --- a/cli/run/loadConfigFile.ts +++ b/cli/run/loadConfigFile.ts @@ -39,8 +39,9 @@ export default function loadConfigFile( }) .then(({ output: [{ code }] }: RollupOutput) => { // temporarily override require - const defaultLoader = require.extensions['.js']; - require.extensions['.js'] = (module: NodeModule, filename: string) => { + const extension = path.extname(configFile); + const defaultLoader = require.extensions[extension]; + require.extensions[extension] = (module: NodeModule, filename: string) => { if (filename === configFile) { (module as NodeModuleWithCompile)._compile(code, filename); } else { @@ -67,9 +68,9 @@ export default function loadConfigFile( }); } - require.extensions['.js'] = defaultLoader; + require.extensions[extension] = defaultLoader; return Array.isArray(configs) ? configs : [configs]; }); }); -} +} \ No newline at end of file diff --git a/docs/01-command-line-reference.md b/docs/01-command-line-reference.md index f2f9f0addc1..8970e765fa4 100755 --- a/docs/01-command-line-reference.md +++ b/docs/01-command-line-reference.md @@ -164,6 +164,9 @@ $ rollup --config # alternatively, specify a custom config file location $ rollup --config my.config.js + +# .js and .mjs are supported +$ rollup --config my.config.mjs ``` You can also export a function that returns any of the above configuration formats. This function will be passed the current command line arguments so that you can dynamically adapt your configuration to respect e.g. [`--silent`](guide/en/#--silent). You can even define your own command line options if you prefix them with `config`: diff --git a/test/cli/samples/config-mjs/_config.js b/test/cli/samples/config-mjs/_config.js new file mode 100644 index 00000000000..bd9fe8544ed --- /dev/null +++ b/test/cli/samples/config-mjs/_config.js @@ -0,0 +1,5 @@ +module.exports = { + description: 'uses config file (.mjs)', + command: 'rollup --config rollup.config.mjs', + execute: true +}; diff --git a/test/cli/samples/config-mjs/main.js b/test/cli/samples/config-mjs/main.js new file mode 100644 index 00000000000..df16c1b06b9 --- /dev/null +++ b/test/cli/samples/config-mjs/main.js @@ -0,0 +1 @@ +assert.equal( ANSWER, 42 ); diff --git a/test/cli/samples/config-mjs/rollup.config.mjs b/test/cli/samples/config-mjs/rollup.config.mjs new file mode 100644 index 00000000000..22bbdf2e99b --- /dev/null +++ b/test/cli/samples/config-mjs/rollup.config.mjs @@ -0,0 +1,11 @@ +import replace from 'rollup-plugin-replace'; + +export default { + input: 'main.js', + output: { + format: 'cjs' + }, + plugins: [ + replace( { 'ANSWER': 42 } ) + ] +};