/
bootstrap.js
66 lines (51 loc) · 1.97 KB
/
bootstrap.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
const WebpackCLI = require('./webpack-cli');
const { core } = require('./utils/cli-flags');
const logger = require('./utils/logger');
const { isCommandUsed } = require('./utils/arg-utils');
const argParser = require('./utils/arg-parser');
const leven = require('leven');
process.title = 'webpack-cli';
const runCLI = async (cliArgs) => {
const parsedArgs = argParser(core, cliArgs, true, process.title);
const commandIsUsed = isCommandUsed(cliArgs);
if (commandIsUsed) {
return;
}
try {
// Create a new instance of the CLI object
const cli = new WebpackCLI();
// Handle the default webpack entry CLI argument, where instead of doing 'webpack-cli --entry ./index.js' you can simply do 'webpack-cli ./index.js'
// If the unknown arg starts with a '-', it will be considered an unknown flag rather than an entry
let entry;
if (parsedArgs.unknownArgs.length > 0) {
entry = [];
parsedArgs.unknownArgs = parsedArgs.unknownArgs.filter((item) => {
if (item.startsWith('-')) {
return true;
}
entry.push(item);
return false;
});
}
if (parsedArgs.unknownArgs.length > 0) {
parsedArgs.unknownArgs.forEach(async (unknown) => {
logger.error(`Unknown argument: ${unknown}`);
const strippedFlag = unknown.substr(2);
const { name: suggestion } = core.find((flag) => leven(strippedFlag, flag.name) < 3);
if (suggestion) {
logger.raw(`Did you mean --${suggestion}?`);
}
});
process.exit(2);
}
const parsedArgsOpts = parsedArgs.opts;
if (entry) {
parsedArgsOpts.entry = entry;
}
await cli.run(parsedArgsOpts, core);
} catch (error) {
logger.error(error);
process.exit(2);
}
};
module.exports = runCLI;