build.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. const BUILD_PATH = 'ui/assets/build';
  2. const MAIN_SCSS_PATH = 'ui/assets/css/admin.scss';
  3. const MODULES_PATH = '../../../node_modules';
  4. const compressor = require(`${MODULES_PATH}/node-minify`);
  5. const sass = require(`${MODULES_PATH}/node-sass`);
  6. const fs = require('fs');
  7. const path = require('path');
  8. /**
  9. * Functions
  10. */
  11. /**
  12. * Convert each line of text file into item array
  13. *
  14. * @param listFileName
  15. * @returns {string[]}
  16. */
  17. function LoadListIntoArray(listFileName) {
  18. // Split every line into array
  19. let listTemp = fs.readFileSync(listFileName).toString().split("\n");
  20. // Clean array:
  21. let listRet = listTemp.filter((x) => {
  22. // remove all comments start with ';' and empty lines ('\r')
  23. return x.replace(/^;.*/, '').replace('\r', '').length > 0
  24. }).map((d) => {
  25. return d.replace('\r', '')
  26. });
  27. return listRet;
  28. }
  29. /**
  30. * MAIN
  31. */
  32. if (!fs.existsSync(BUILD_PATH)) {
  33. console.log(`Create folder ${BUILD_PATH}`);
  34. fs.mkdirSync(BUILD_PATH);
  35. }
  36. let libList = LoadListIntoArray('build.js.list');
  37. let cssList = LoadListIntoArray('build.css.list');
  38. /**
  39. * CSS
  40. */
  41. // Compile SCSS
  42. console.log('Compiling SCSS');
  43. let buffer = sass.renderSync({file: MAIN_SCSS_PATH});
  44. // Write to file CSS
  45. fs.writeFileSync(`${BUILD_PATH}/admin.min.css`, buffer.css);
  46. //Concatenate all CSS in one MIN.CSS file
  47. console.log('Bundle CSS');
  48. compressor.minify({
  49. compressor: 'clean-css',
  50. input: cssList,
  51. output: `${BUILD_PATH}/bundle.min.css`
  52. }
  53. );
  54. /**
  55. * JS
  56. */
  57. // Minify+Concatenate JS files it in one file
  58. console.log('Bundle JS');
  59. compressor.minify({
  60. compressor: 'terser',
  61. input: libList,
  62. output: `${BUILD_PATH}/bundle.min.js`
  63. }
  64. );
  65. fs.unlinkSync(`${BUILD_PATH}/admin.min.css`);
  66. console.log('All done.');