Skip to content

Commit 3b79059

Browse files
fix(perf): reduced startup time
1 parent 8ce797d commit 3b79059

File tree

1 file changed

+9
-10
lines changed

1 file changed

+9
-10
lines changed

packages/webpack-cli/src/webpack-cli.ts

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,7 @@ const fs = require("fs");
5555
const path = require("path");
5656
const { pathToFileURL } = require("url");
5757
const util = require("util");
58-
5958
const { program, Option } = require("commander");
60-
const envinfo = require("envinfo");
6159

6260
const WEBPACK_PACKAGE = process.env.WEBPACK_PACKAGE || "webpack";
6361
const WEBPACK_DEV_SERVER_PACKAGE = process.env.WEBPACK_DEV_SERVER_PACKAGE || "webpack-dev-server";
@@ -449,6 +447,8 @@ class WebpackCLI implements IWebpackCLI {
449447

450448
defaultInformation.npmPackages = `{${defaultPackages.map((item) => `*${item}*`).join(",")}}`;
451449

450+
const envinfo = await this.tryRequireThenImport<typeof import("envinfo")>("envinfo", false);
451+
452452
let info = await envinfo.run(defaultInformation, envinfoConfig);
453453

454454
info = info.replace(/npmPackages/g, "Packages");
@@ -1873,19 +1873,18 @@ class WebpackCLI implements IWebpackCLI {
18731873
".webpack/webpackfile",
18741874
]
18751875
.map((filename) =>
1876-
// Since .cjs is not available on interpret side add it manually to default config extension list
1877-
[...Object.keys(interpret.extensions), ".cjs"].map((ext) => ({
1878-
path: path.resolve(filename + ext),
1879-
ext: ext,
1880-
module: interpret.extensions[ext],
1881-
})),
1876+
// Prioritize popular extensions first to avoid unnecessary fs calls
1877+
// TODO ".mts" is not supported by `interpret`, need to add it
1878+
[".js", ".mjs", ".cjs", ".ts", ".cts", ...Object.keys(interpret.extensions)].map((ext) =>
1879+
path.resolve(filename + ext),
1880+
),
18821881
)
18831882
.reduce((accumulator, currentValue) => accumulator.concat(currentValue), []);
18841883

18851884
let foundDefaultConfigFile;
18861885

18871886
for (const defaultConfigFile of defaultConfigFiles) {
1888-
if (!fs.existsSync(defaultConfigFile.path)) {
1887+
if (!fs.existsSync(defaultConfigFile)) {
18891888
continue;
18901889
}
18911890

@@ -1894,7 +1893,7 @@ class WebpackCLI implements IWebpackCLI {
18941893
}
18951894

18961895
if (foundDefaultConfigFile) {
1897-
const loadedConfig = await loadConfigByPath(foundDefaultConfigFile.path, options.argv);
1896+
const loadedConfig = await loadConfigByPath(foundDefaultConfigFile, options.argv);
18981897

18991898
config.options = loadedConfig.options as WebpackConfiguration[];
19001899

0 commit comments

Comments
 (0)