|
@@ -1,106 +1,79 @@
|
|
|
|
|
+const BUILD_PATH = 'ui/assets/build';
|
|
|
|
|
+const MAIN_SCSS_PATH = 'ui/assets/css/admin.scss';
|
|
|
|
|
+
|
|
|
const MODULES_PATH = '../../../node_modules';
|
|
const MODULES_PATH = '../../../node_modules';
|
|
|
const compressor = require(`${MODULES_PATH}/node-minify`);
|
|
const compressor = require(`${MODULES_PATH}/node-minify`);
|
|
|
const sass = require(`${MODULES_PATH}/node-sass`);
|
|
const sass = require(`${MODULES_PATH}/node-sass`);
|
|
|
const fs = require('fs');
|
|
const fs = require('fs');
|
|
|
-var path = require('path');
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-let listTemp = fs.readFileSync('build.css.list').toString().split("\n");
|
|
|
|
|
-let cssList = listTemp.filter((x) => {
|
|
|
|
|
- return x.replace(/^;.*/, '').replace('\r', '').length > 0
|
|
|
|
|
-}).map((d) => {
|
|
|
|
|
- return d.replace('\r', '')
|
|
|
|
|
-});
|
|
|
|
|
-
|
|
|
|
|
-let libList = [
|
|
|
|
|
- "ui/assets/js/jquery.min.js",
|
|
|
|
|
- "ui/assets/js/popper.min.js",
|
|
|
|
|
- "ui/assets/js/bootstrap.min.js",
|
|
|
|
|
- "ui/assets/js/waves.js",
|
|
|
|
|
- "ui/assets/js/jquery.slimscroll.js",
|
|
|
|
|
-
|
|
|
|
|
- // Required datatable js
|
|
|
|
|
- "ui/assets/plugins/datatables/jquery.dataTables.min.js",
|
|
|
|
|
- "ui/assets/plugins/datatables/dataTables.bootstrap4.min.js",
|
|
|
|
|
-
|
|
|
|
|
- //Buttons examples
|
|
|
|
|
- "ui/assets/plugins/datatables/dataTables.buttons.min.js",
|
|
|
|
|
- "ui/assets/plugins/datatables/buttons.bootstrap4.min.js",
|
|
|
|
|
- "ui/assets/plugins/datatables/jszip.min.js",
|
|
|
|
|
- "ui/assets/plugins/datatables/pdfmake.min.js",
|
|
|
|
|
- "ui/assets/plugins/datatables/vfs_fonts.js",
|
|
|
|
|
- "ui/assets/plugins/datatables/buttons.html5.min.js",
|
|
|
|
|
- "ui/assets/plugins/datatables/buttons.print.min.js",
|
|
|
|
|
-
|
|
|
|
|
- // Key Tables
|
|
|
|
|
- "ui/assets/plugins/datatables/dataTables.keyTable.min.js",
|
|
|
|
|
-
|
|
|
|
|
- // Responsive examples
|
|
|
|
|
- "ui/assets/plugins/datatables/dataTables.responsive.min.js",
|
|
|
|
|
- "ui/assets/plugins/datatables/responsive.bootstrap4.min.js",
|
|
|
|
|
-
|
|
|
|
|
- // Selection table
|
|
|
|
|
- "ui/assets/plugins/datatables/dataTables.select.min.js",
|
|
|
|
|
-
|
|
|
|
|
- // App js
|
|
|
|
|
- "ui/assets/js/jquery.core.js",
|
|
|
|
|
- "ui/assets/js/jquery.app.js",
|
|
|
|
|
- "ui/assets/js/admin.js",
|
|
|
|
|
-];
|
|
|
|
|
-
|
|
|
|
|
|
|
+const path = require('path');
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* Functions
|
|
* Functions
|
|
|
*/
|
|
*/
|
|
|
|
|
|
|
|
-/* List all files in a directory recursively in a synchronous fashion.
|
|
|
|
|
-*
|
|
|
|
|
-* @param {String} dir
|
|
|
|
|
-* @returns {IterableIterator<String>}
|
|
|
|
|
-*/
|
|
|
|
|
-function* walkSync(dir) {
|
|
|
|
|
- const files = fs.readdirSync(dir);
|
|
|
|
|
-
|
|
|
|
|
- for (const file of files) {
|
|
|
|
|
- const pathToFile = path.join(dir, file);
|
|
|
|
|
- const isDirectory = fs.statSync(pathToFile).isDirectory();
|
|
|
|
|
- if (isDirectory) {
|
|
|
|
|
- yield* walkSync(pathToFile);
|
|
|
|
|
- } else {
|
|
|
|
|
- yield pathToFile;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+/**
|
|
|
|
|
+ * Convert each line of text file into item array
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param listFileName
|
|
|
|
|
+ * @returns {string[]}
|
|
|
|
|
+ */
|
|
|
|
|
+function LoadListIntoArray(listFileName) {
|
|
|
|
|
+ // Split every line into array
|
|
|
|
|
+ let listTemp = fs.readFileSync(listFileName).toString().split("\n");
|
|
|
|
|
+
|
|
|
|
|
+ // Clean array:
|
|
|
|
|
+ let listRet = listTemp.filter((x) => {
|
|
|
|
|
+ // remove all comments start with ';' and empty lines ('\r')
|
|
|
|
|
+ return x.replace(/^;.*/, '').replace('\r', '').length > 0
|
|
|
|
|
+ }).map((d) => {
|
|
|
|
|
+ return d.replace('\r', '')
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ return listRet;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* MAIN
|
|
* MAIN
|
|
|
*/
|
|
*/
|
|
|
|
|
|
|
|
|
|
+if (!fs.existsSync(BUILD_PATH)) {
|
|
|
|
|
+ console.log(`Create folder ${BUILD_PATH}`);
|
|
|
|
|
+ fs.mkdirSync(BUILD_PATH);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+let libList = LoadListIntoArray('build.js.list');
|
|
|
|
|
+let cssList = LoadListIntoArray('build.css.list');
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* CSS
|
|
* CSS
|
|
|
*/
|
|
*/
|
|
|
|
|
|
|
|
// Compile SCSS
|
|
// Compile SCSS
|
|
|
-let buffer = sass.renderSync({file: 'ui/assets/css/admin.scss'});
|
|
|
|
|
|
|
+console.log('Compiling SCSS');
|
|
|
|
|
+let buffer = sass.renderSync({file: MAIN_SCSS_PATH});
|
|
|
// Write to file CSS
|
|
// Write to file CSS
|
|
|
-fs.writeFileSync('ui/assets/build/admin.min.css', buffer.css);
|
|
|
|
|
|
|
+fs.writeFileSync(`${BUILD_PATH}/admin.min.css`, buffer.css);
|
|
|
|
|
|
|
|
//Concatenate all CSS in one MIN.CSS file
|
|
//Concatenate all CSS in one MIN.CSS file
|
|
|
|
|
+console.log('Bundle CSS');
|
|
|
compressor.minify({
|
|
compressor.minify({
|
|
|
- compressor: 'clean-css',
|
|
|
|
|
- input: cssList,
|
|
|
|
|
- output: 'ui/assets/build/bundle.min.css'
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ compressor: 'clean-css',
|
|
|
|
|
+ input: cssList,
|
|
|
|
|
+ output: `${BUILD_PATH}/bundle.min.css`
|
|
|
|
|
+ }
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* JS
|
|
* JS
|
|
|
*/
|
|
*/
|
|
|
-// ..and minify it in one file
|
|
|
|
|
|
|
|
|
|
|
|
+// Minify+Concatenate JS files it in one file
|
|
|
|
|
+console.log('Bundle JS');
|
|
|
compressor.minify({
|
|
compressor.minify({
|
|
|
- compressor: 'uglify-es',
|
|
|
|
|
- input: libList,
|
|
|
|
|
- output: 'ui/assets/build/bundle.min.js'
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ compressor: 'uglify-es',
|
|
|
|
|
+ input: libList,
|
|
|
|
|
+ output: `${BUILD_PATH}/bundle.min.js`
|
|
|
|
|
+ }
|
|
|
);
|
|
);
|
|
|
|
|
+
|
|
|
|
|
+console.log('All done.');
|