Skip to content

Commit b0fffd5

Browse files
committed
Merge pull request webpack#2118 from johanneslumpe/patch-1
Added support for using an ES6 default exported function for configuration
2 parents d483ed2 + 405c141 commit b0fffd5

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

bin/convert-argv.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,14 +94,19 @@ module.exports = function(optimist, argv, convertOptions) {
9494
configFileLoaded = true;
9595
}
9696

97-
if(typeof options === "function") {
97+
var isES6DefaultExportedFunc = (
98+
typeof options === "object" && options !== null && typeof options.default === "function"
99+
);
100+
101+
if(typeof options === "function" || isES6DefaultExportedFunc) {
102+
options = isES6DefaultExportedFunc ? options.default : options;
98103
options = options(argv.env, argv);
99104
}
100105

101106
return processConfiguredOptions(options);
102107

103108
function processConfiguredOptions(options) {
104-
if(typeof options !== "object" || options === null) {
109+
if(options === null || typeof options !== "object") {
105110
console.error("Config did not export an object or a function returning an object.");
106111
process.exit(-1); // eslint-disable-line
107112
}
@@ -112,8 +117,8 @@ module.exports = function(optimist, argv, convertOptions) {
112117
}
113118

114119
// process ES6 default
115-
if(typeof options === "object" && typeof options["default"] === "object") {
116-
return processConfiguredOptions(options["default"]);
120+
if(typeof options === "object" && typeof options.default === "object") {
121+
return processConfiguredOptions(options.default);
117122
}
118123

119124
if(Array.isArray(options)) {

0 commit comments

Comments
 (0)