spaceout/front_end/node_modules/webpack-cli/lib/bootstrap.js
2020-12-12 10:25:30 -05:00

67 lines
2.0 KiB
JavaScript

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;