Explorar el Código

fix: Pretty CLI Output

version-14
Faris Ansari hace 4 años
padre
commit
09f5e904a9
Se han modificado 4 ficheros con 120 adiciones y 22 borrados
  1. +76
    -10
      esbuild/index.js
  2. +9
    -12
      esbuild/utils.js
  3. +1
    -0
      package.json
  4. +34
    -0
      yarn.lock

+ 76
- 10
esbuild/index.js Ver fichero

@@ -2,8 +2,10 @@ let path = require("path");
let fs = require("fs"); let fs = require("fs");
let glob = require("fast-glob"); let glob = require("fast-glob");
let esbuild = require("esbuild"); let esbuild = require("esbuild");
let html_plugin = require("./esbuild-plugin-html");
let vue = require("esbuild-vue"); let vue = require("esbuild-vue");
let cliui = require("cliui")();
let chalk = require("chalk");
let html_plugin = require("./esbuild-plugin-html");
let postCssPlugin = require("esbuild-plugin-postcss2").default; let postCssPlugin = require("esbuild-plugin-postcss2").default;
let ignore_assets = require("./ignore-assets"); let ignore_assets = require("./ignore-assets");
let sass_options = require("./sass_options"); let sass_options = require("./sass_options");
@@ -16,7 +18,7 @@ let {
get_cli_arg get_cli_arg
} = require("./utils"); } = require("./utils");


const TOTAL_BUILD_TIME = "Total Build Time";
const TOTAL_BUILD_TIME = `${chalk.black.bgGreen(" DONE ")} Total Build Time`;
const WATCH_MODE = get_cli_arg("watch"); const WATCH_MODE = get_cli_arg("watch");
const NODE_PATHS = [].concat( const NODE_PATHS = [].concat(
// node_modules of apps directly importable // node_modules of apps directly importable
@@ -30,9 +32,25 @@ const NODE_PATHS = [].concat(
); );


(async function() { (async function() {
let apps = app_list;
let apps_arg = get_cli_arg("apps");
if (apps_arg) {
apps = apps_arg.split(",");
}

console.time(TOTAL_BUILD_TIME); console.time(TOTAL_BUILD_TIME);
await build_assets_for_apps(app_list);
console.timeEnd(TOTAL_BUILD_TIME);
build_assets_for_apps(apps)
.then(() => {
console.timeEnd(TOTAL_BUILD_TIME);
console.log();
if (WATCH_MODE) {
console.log('Watching for changes...')
}
})
.catch(() => {
let error = chalk.white.bgRed(" ERROR ");
console.error(`${error} There were some problems during build`);
});
})(); })();


function build_assets_for_apps(apps) { function build_assets_for_apps(apps) {
@@ -127,8 +145,8 @@ function build_files({ files, outdir }) {
if (error) if (error)
console.error("watch build failed:", error); console.error("watch build failed:", error);
else { else {
console.log("\n\nwatch build succeeded:");
log_build_meta(result.metafile);
console.log(`${new Date().toLocaleTimeString()}: Compiled changes...`)
// log_build_meta(result.metafile);
} }
} }
} }
@@ -136,18 +154,66 @@ function build_files({ files, outdir }) {
}) })
.then(result => { .then(result => {
log_build_meta(result.metafile); log_build_meta(result.metafile);
})
.catch(e => {
console.error("Error during build");
}); });
} }


function log_build_meta(metafile) { function log_build_meta(metafile) {
let column_widths = [40, 20];
cliui.div(
{
text: chalk.cyan.bold("File"),
width: column_widths[0]
},
{
text: chalk.cyan.bold("Size"),
width: column_widths[1]
}
);
cliui.div("");

let output_by_dist_path = {};
for (let outfile in metafile.outputs) { for (let outfile in metafile.outputs) {
if (outfile.endsWith(".map")) continue; if (outfile.endsWith(".map")) continue;
let data = metafile.outputs[outfile]; let data = metafile.outputs[outfile];
outfile = path.resolve(outfile); outfile = path.resolve(outfile);
outfile = path.relative(assets_path, outfile); outfile = path.relative(assets_path, outfile);
console.log(outfile, data.bytes / 1000 + " Kb");
let filename = path.basename(outfile);
let dist_path = outfile.replace(filename, "");
output_by_dist_path[dist_path] = output_by_dist_path[dist_path] || [];
output_by_dist_path[dist_path].push({
name: filename,
size: (data.bytes / 1000).toFixed(2) + " Kb"
});
}

for (let dist_path in output_by_dist_path) {
let files = output_by_dist_path[dist_path];
cliui.div({
text: dist_path,
width: column_widths[0]
});

for (let i in files) {
let file = files[i];
let branch = "";
if (i < files.length - 1) {
branch = "├─ ";
} else {
branch = "└─ ";
}
let color = file.name.endsWith(".js") ? "green" : "blue";
cliui.div(
{
text: branch + chalk[color]("" + file.name),
width: column_widths[0]
},
{
text: file.size,
width: column_widths[1]
}
);
}
cliui.div("");
} }
console.log(cliui.toString());
} }

+ 9
- 12
esbuild/utils.js Ver fichero

@@ -97,20 +97,17 @@ function get_apps_list() {


function get_cli_arg(name) { function get_cli_arg(name) {
let args = process.argv.slice(2); let args = process.argv.slice(2);
let arg = `--${name}`;
let index = args.indexOf(arg);


for (let i in args) {
let arg = args[i];
let value = null;
if (arg == `--${name}`) {
value = true;
}
if (args[i + 1]) {
value = args[i + 1];
}
if (value) {
return value;
}
let value = null;
if (index != -1) {
value = true;
}
if (value && args[index + 1]) {
value = args[index + 1];
} }
return value;
} }


module.exports = { module.exports = {


+ 1
- 0
package.json Ver fichero

@@ -22,6 +22,7 @@
"autoprefixer": "^9.8.6", "autoprefixer": "^9.8.6",
"awesomplete": "^1.1.5", "awesomplete": "^1.1.5",
"bootstrap": "4.5.0", "bootstrap": "4.5.0",
"cliui": "^7.0.4",
"cookie": "^0.4.0", "cookie": "^0.4.0",
"cssnano": "^4.1.10", "cssnano": "^4.1.10",
"driver.js": "^0.9.8", "driver.js": "^0.9.8",


+ 34
- 0
yarn.lock Ver fichero

@@ -749,6 +749,13 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1:
dependencies: dependencies:
color-convert "^1.9.0" color-convert "^1.9.0"


ansi-styles@^4.0.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
dependencies:
color-convert "^2.0.1"

ansi-styles@^4.1.0: ansi-styles@^4.1.0:
version "4.2.1" version "4.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359"
@@ -1524,6 +1531,15 @@ cliui@^5.0.0:
strip-ansi "^5.2.0" strip-ansi "^5.2.0"
wrap-ansi "^5.1.0" wrap-ansi "^5.1.0"


cliui@^7.0.4:
version "7.0.4"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
dependencies:
string-width "^4.2.0"
strip-ansi "^6.0.0"
wrap-ansi "^7.0.0"

clone-buffer@^1.0.0: clone-buffer@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58"
@@ -8431,6 +8447,15 @@ string-width@^4.0.0, string-width@^4.1.0:
is-fullwidth-code-point "^3.0.0" is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.0" strip-ansi "^6.0.0"


string-width@^4.2.0:
version "4.2.2"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5"
integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==
dependencies:
emoji-regex "^8.0.0"
is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.0"

string.prototype.trimend@^1.0.0: string.prototype.trimend@^1.0.0:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913"
@@ -9383,6 +9408,15 @@ wrap-ansi@^5.1.0:
string-width "^3.0.0" string-width "^3.0.0"
strip-ansi "^5.0.0" strip-ansi "^5.0.0"


wrap-ansi@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
dependencies:
ansi-styles "^4.0.0"
string-width "^4.1.0"
strip-ansi "^6.0.0"

wrappy@1: wrappy@1:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"


Cargando…
Cancelar
Guardar