選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 
 
 
 

80 行
1.9 KiB

  1. let glob = require("fast-glob");
  2. let esbuild = require("esbuild");
  3. let html_plugin = require("./esbuild-plugin-html");
  4. let vue = require("esbuild-vue");
  5. let postCssPlugin = require("esbuild-plugin-postcss2").default;
  6. let ignore_assets = require("./ignore-assets");
  7. let { get_options_for_scss } = require("../rollup/rollup.utils");
  8. console.time("Build time");
  9. glob(["frappe/public/js/**/*.bundle.js"]).then(entry_files => {
  10. esbuild
  11. .build({
  12. entryPoints: entry_files,
  13. outdir: "frappe/public/build",
  14. outbase: "frappe/public",
  15. sourcemap: true,
  16. bundle: true,
  17. metafile: true,
  18. minify: true,
  19. define: {
  20. "process.env.NODE_ENV": "'development'"
  21. },
  22. plugins: [
  23. html_plugin,
  24. ignore_assets,
  25. vue(),
  26. postCssPlugin({
  27. plugins: [require("autoprefixer")],
  28. sassOptions: {
  29. ...get_options_for_scss(),
  30. importer: function(url) {
  31. if (url.startsWith("~")) {
  32. // strip ~ so that it can resolve from node_modules
  33. url = url.slice(1);
  34. }
  35. if (url.endsWith(".css")) {
  36. // strip .css from end of path
  37. url = url.slice(0, -4);
  38. }
  39. // normal file, let it go
  40. return {
  41. file: url
  42. };
  43. }
  44. }
  45. })
  46. ],
  47. // watch: {
  48. // onRebuild(error, result) {
  49. // if (error) console.error("watch build failed:", error);
  50. // else {
  51. // console.log("watch build succeeded:");
  52. // log_build_meta(result.metafile);
  53. // }
  54. // }
  55. // }
  56. })
  57. .then(result => {
  58. log_build_meta(result.metafile);
  59. if (result.warnings.length) {
  60. console.warn(result.warnings);
  61. }
  62. })
  63. .catch(e => console.error("error"))
  64. .finally(() => {
  65. console.timeEnd("Build time");
  66. });
  67. });
  68. function log_build_meta(metafile) {
  69. for (let outfile in metafile.outputs) {
  70. if (outfile.endsWith('.map')) continue;
  71. let data = metafile.outputs[outfile];
  72. console.log(outfile, data.bytes / 1000 + " Kb");
  73. }
  74. }