Skip to content

Commit

Permalink
Merge pull request #13401 from webpack/pascal-readonly-array
Browse files Browse the repository at this point in the history
accept a readonly array for configuration options
  • Loading branch information
sokra committed May 19, 2021
2 parents 0b3f717 + 5f7394b commit 08090a9
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 9 deletions.
18 changes: 11 additions & 7 deletions lib/webpack.js
Expand Up @@ -36,7 +36,7 @@ const getValidateSchema = memoize(() => require("./validateSchema"));
*/

/**
* @param {WebpackOptions[]} childOptions options array
* @param {ReadonlyArray<WebpackOptions>} childOptions options array
* @param {MultiCompilerOptions} options options
* @returns {MultiCompiler} a multi-compiler
*/
Expand Down Expand Up @@ -92,14 +92,14 @@ const createCompiler = rawOptions => {

/**
* @callback WebpackFunctionMulti
* @param {WebpackOptions[] & MultiCompilerOptions} options options objects
* @param {ReadonlyArray<WebpackOptions> & MultiCompilerOptions} options options objects
* @param {Callback<MultiStats>=} callback callback
* @returns {MultiCompiler} the multi compiler object
*/

const webpack = /** @type {WebpackFunctionSingle & WebpackFunctionMulti} */ (
/**
* @param {WebpackOptions | (WebpackOptions[] & MultiCompilerOptions)} options options
* @param {WebpackOptions | (ReadonlyArray<WebpackOptions> & MultiCompilerOptions)} options options
* @param {Callback<Stats> & Callback<MultiStats>=} callback callback
* @returns {Compiler | MultiCompiler}
*/
Expand All @@ -115,14 +115,18 @@ const webpack = /** @type {WebpackFunctionSingle & WebpackFunctionMulti} */ (
let watchOptions;
if (Array.isArray(options)) {
/** @type {MultiCompiler} */
compiler = createMultiCompiler(options, options);
compiler = createMultiCompiler(
options,
/** @type {MultiCompilerOptions} */ (options)
);
watch = options.some(options => options.watch);
watchOptions = options.map(options => options.watchOptions || {});
} else {
const webpackOptions = /** @type {WebpackOptions} */ (options);
/** @type {Compiler} */
compiler = createCompiler(options);
watch = options.watch;
watchOptions = options.watchOptions || {};
compiler = createCompiler(webpackOptions);
watch = webpackOptions.watch;
watchOptions = webpackOptions.watchOptions || {};
}
return { compiler, watch, watchOptions };
};
Expand Down
4 changes: 2 additions & 2 deletions types.d.ts
Expand Up @@ -11925,14 +11925,14 @@ declare function exports(
callback?: CallbackWebpack<Stats>
): Compiler;
declare function exports(
options: Configuration[] & MultiCompilerOptions,
options: ReadonlyArray<Configuration> & MultiCompilerOptions,
callback?: CallbackWebpack<MultiStats>
): MultiCompiler;
declare namespace exports {
export const webpack: {
(options: Configuration, callback?: CallbackWebpack<Stats>): Compiler;
(
options: Configuration[] & MultiCompilerOptions,
options: ReadonlyArray<Configuration> & MultiCompilerOptions,
callback?: CallbackWebpack<MultiStats>
): MultiCompiler;
};
Expand Down

0 comments on commit 08090a9

Please sign in to comment.