|
|
@@ -1,19 +1,54 @@ |
|
|
|
let path = require("path"); |
|
|
|
let glob = require("fast-glob"); |
|
|
|
let esbuild = require("esbuild"); |
|
|
|
let html_plugin = require("./esbuild-plugin-html"); |
|
|
|
let vue = require("esbuild-vue"); |
|
|
|
let postCssPlugin = require("esbuild-plugin-postcss2").default; |
|
|
|
let ignore_assets = require("./ignore-assets"); |
|
|
|
let { get_options_for_scss } = require("../rollup/rollup.utils"); |
|
|
|
let { |
|
|
|
app_list, |
|
|
|
get_options_for_scss, |
|
|
|
get_public_path, |
|
|
|
run_serially |
|
|
|
} = require("./utils"); |
|
|
|
|
|
|
|
console.time("Build time"); |
|
|
|
const TOTAL_BUILD_TIME = "Total Build Time"; |
|
|
|
|
|
|
|
glob(["frappe/public/js/**/*.bundle.js"]).then(entry_files => { |
|
|
|
esbuild |
|
|
|
|
|
|
|
(async function() { |
|
|
|
console.time(TOTAL_BUILD_TIME); |
|
|
|
await run_build_for_apps(app_list); |
|
|
|
console.timeEnd(TOTAL_BUILD_TIME); |
|
|
|
})(); |
|
|
|
|
|
|
|
function run_build_for_apps(apps) { |
|
|
|
return run_serially(apps.map(app => () => run_build_for_app(app))); |
|
|
|
} |
|
|
|
|
|
|
|
function run_build_for_app(app) { |
|
|
|
let public_path = get_public_path(app); |
|
|
|
let include_patterns = path.resolve(public_path, "**", "*.bundle.js"); |
|
|
|
let ignore_patterns = [ |
|
|
|
path.resolve(public_path, "node_modules"), |
|
|
|
path.resolve(public_path, "build") |
|
|
|
]; |
|
|
|
|
|
|
|
return glob(include_patterns, { ignore: ignore_patterns }).then(files => { |
|
|
|
console.log(`\nBuilding assets for ${app}...`); |
|
|
|
return build_files({ |
|
|
|
files, |
|
|
|
outdir: path.resolve(public_path, "build"), |
|
|
|
outbase: public_path |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
function build_files({ files, outdir, outbase }) { |
|
|
|
return esbuild |
|
|
|
.build({ |
|
|
|
entryPoints: entry_files, |
|
|
|
outdir: "frappe/public/build", |
|
|
|
outbase: "frappe/public", |
|
|
|
entryPoints: files, |
|
|
|
outdir, |
|
|
|
outbase, |
|
|
|
sourcemap: true, |
|
|
|
bundle: true, |
|
|
|
metafile: true, |
|
|
@@ -45,7 +80,7 @@ glob(["frappe/public/js/**/*.bundle.js"]).then(entry_files => { |
|
|
|
} |
|
|
|
} |
|
|
|
}) |
|
|
|
], |
|
|
|
] |
|
|
|
|
|
|
|
// watch: { |
|
|
|
// onRebuild(error, result) { |
|
|
@@ -59,20 +94,15 @@ glob(["frappe/public/js/**/*.bundle.js"]).then(entry_files => { |
|
|
|
}) |
|
|
|
.then(result => { |
|
|
|
log_build_meta(result.metafile); |
|
|
|
|
|
|
|
if (result.warnings.length) { |
|
|
|
console.warn(result.warnings); |
|
|
|
} |
|
|
|
}) |
|
|
|
.catch(e => console.error("error")) |
|
|
|
.finally(() => { |
|
|
|
console.timeEnd("Build time"); |
|
|
|
.catch(e => { |
|
|
|
console.error("Error during build"); |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
function log_build_meta(metafile) { |
|
|
|
for (let outfile in metafile.outputs) { |
|
|
|
if (outfile.endsWith('.map')) continue; |
|
|
|
if (outfile.endsWith(".map")) continue; |
|
|
|
let data = metafile.outputs[outfile]; |
|
|
|
console.log(outfile, data.bytes / 1000 + " Kb"); |
|
|
|
} |
|
|
|