|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- 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");
-
- console.time("Build time");
-
- glob(["frappe/public/js/**/*.bundle.js"]).then(entry_files => {
- esbuild
- .build({
- entryPoints: entry_files,
- outdir: "frappe/public/build",
- outbase: "frappe/public",
- sourcemap: true,
- bundle: true,
- metafile: true,
- minify: true,
- define: {
- "process.env.NODE_ENV": "'development'"
- },
- plugins: [
- html_plugin,
- ignore_assets,
- vue(),
- postCssPlugin({
- plugins: [require("autoprefixer")],
- sassOptions: {
- ...get_options_for_scss(),
- importer: function(url) {
- if (url.startsWith("~")) {
- // strip ~ so that it can resolve from node_modules
- url = url.slice(1);
- }
- if (url.endsWith(".css")) {
- // strip .css from end of path
- url = url.slice(0, -4);
- }
- // normal file, let it go
- return {
- file: url
- };
- }
- }
- })
- ],
-
- // watch: {
- // onRebuild(error, result) {
- // if (error) console.error("watch build failed:", error);
- // else {
- // console.log("watch build succeeded:");
- // log_build_meta(result.metafile);
- // }
- // }
- // }
- })
- .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");
- });
- });
-
- function log_build_meta(metafile) {
- for (let outfile in metafile.outputs) {
- if (outfile.endsWith('.map')) continue;
- let data = metafile.outputs[outfile];
- console.log(outfile, data.bytes / 1000 + " Kb");
- }
- }
|