Skip to content

Commit 9c85d2a

Browse files
arlac77lukastaegert
authored andcommitted
support all config file extensions (.js,.mjs,...) (#3204)
* feat: support *.mjs as config file extension see #3189 * docs: add *.mjs cli example * fix: overwrite loder for the extension of the actual config file
1 parent 53fb6fe commit 9c85d2a

5 files changed

Lines changed: 25 additions & 4 deletions

File tree

cli/run/loadConfigFile.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,9 @@ export default function loadConfigFile(
3939
})
4040
.then(({ output: [{ code }] }: RollupOutput) => {
4141
// temporarily override require
42-
const defaultLoader = require.extensions['.js'];
43-
require.extensions['.js'] = (module: NodeModule, filename: string) => {
42+
const extension = path.extname(configFile);
43+
const defaultLoader = require.extensions[extension];
44+
require.extensions[extension] = (module: NodeModule, filename: string) => {
4445
if (filename === configFile) {
4546
(module as NodeModuleWithCompile)._compile(code, filename);
4647
} else {
@@ -67,9 +68,9 @@ export default function loadConfigFile(
6768
});
6869
}
6970

70-
require.extensions['.js'] = defaultLoader;
71+
require.extensions[extension] = defaultLoader;
7172

7273
return Array.isArray(configs) ? configs : [configs];
7374
});
7475
});
75-
}
76+
}

docs/01-command-line-reference.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,9 @@ $ rollup --config
164164

165165
# alternatively, specify a custom config file location
166166
$ rollup --config my.config.js
167+
168+
# .js and .mjs are supported
169+
$ rollup --config my.config.mjs
167170
```
168171

169172
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`:
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module.exports = {
2+
description: 'uses config file (.mjs)',
3+
command: 'rollup --config rollup.config.mjs',
4+
execute: true
5+
};
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
assert.equal( ANSWER, 42 );
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import replace from 'rollup-plugin-replace';
2+
3+
export default {
4+
input: 'main.js',
5+
output: {
6+
format: 'cjs'
7+
},
8+
plugins: [
9+
replace( { 'ANSWER': 42 } )
10+
]
11+
};

0 commit comments

Comments
 (0)