86 lines
3.3 KiB
JavaScript
86 lines
3.3 KiB
JavaScript
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const envinfo_1 = __importDefault(require("envinfo"));
|
|
class InfoCommand {
|
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any
|
|
async apply(cli) {
|
|
await cli.makeCommand({
|
|
name: "info",
|
|
alias: "i",
|
|
description: "Outputs information about your system.",
|
|
usage: "[options]",
|
|
pkg: "@webpack-cli/info",
|
|
}, [
|
|
{
|
|
name: "output",
|
|
alias: "o",
|
|
configs: [
|
|
{
|
|
type: "string",
|
|
},
|
|
],
|
|
description: "To get the output in a specified format ( accept json or markdown )",
|
|
},
|
|
{
|
|
name: "additional-package",
|
|
alias: "a",
|
|
configs: [{ type: "string" }],
|
|
multiple: true,
|
|
description: "Adds additional packages to the output",
|
|
},
|
|
], async (options) => {
|
|
let { output } = options;
|
|
const envinfoConfig = {};
|
|
if (output) {
|
|
// Remove quotes if exist
|
|
output = output.replace(/['"]+/g, "");
|
|
switch (output) {
|
|
case "markdown":
|
|
envinfoConfig["markdown"] = true;
|
|
break;
|
|
case "json":
|
|
envinfoConfig["json"] = true;
|
|
break;
|
|
default:
|
|
cli.logger.error(`'${output}' is not a valid value for output`);
|
|
process.exit(2);
|
|
}
|
|
}
|
|
const defaultInformation = {
|
|
Binaries: ["Node", "Yarn", "npm"],
|
|
Browsers: [
|
|
"Brave Browser",
|
|
"Chrome",
|
|
"Chrome Canary",
|
|
"Edge",
|
|
"Firefox",
|
|
"Firefox Developer Edition",
|
|
"Firefox Nightly",
|
|
"Internet Explorer",
|
|
"Safari",
|
|
"Safari Technology Preview",
|
|
],
|
|
Monorepos: ["Yarn Workspaces", "Lerna"],
|
|
System: ["OS", "CPU", "Memory"],
|
|
npmGlobalPackages: ["webpack", "webpack-cli", "webpack-dev-server"],
|
|
npmPackages: "{*webpack*,*loader*}",
|
|
};
|
|
let defaultPackages = ["webpack", "loader"];
|
|
if (typeof options.additionalPackage !== "undefined") {
|
|
defaultPackages = [...defaultPackages, ...options.additionalPackage];
|
|
}
|
|
defaultInformation.npmPackages = `{${defaultPackages
|
|
.map((item) => `*${item}*`)
|
|
.join(",")}}`;
|
|
let info = await envinfo_1.default.run(defaultInformation, envinfoConfig);
|
|
info = info.replace(/npmPackages/g, "Packages");
|
|
info = info.replace(/npmGlobalPackages/g, "Global Packages");
|
|
cli.logger.raw(info);
|
|
});
|
|
}
|
|
}
|
|
exports.default = InfoCommand;
|