json-object-editor
Version:
JOE the Json Object Editor | Platform Edition
61 lines (56 loc) • 1.9 kB
JavaScript
// build.js
const concat = require('concat');
const terser = require('terser');
const CleanCSS = require('clean-css');
const fs = require('fs-extra');
const pkg = require('./package.json');
const banner = `/* --------------------------------------------------------
*
* ${pkg.projectName || pkg.name} - v${pkg.version}
* Created by: ${(pkg.author && pkg.author.name) || pkg.author}
*
* -------------------------------------------------------- */\n`;
async function buildCSS() {
// Concatenate CSS files
const cssFiles = [
"css/leaflet.css",
"css/esri-leaflet-geocoder.css",
"css/joe-styles.css",
"css/jquery-ui.min.css",
"css/jquery.timepicker.min.css",
"css/variants/style-variant1.css",
"css/joe-print.css"
];
await concat(cssFiles, 'css/joe.css');
// Add banner
let css = fs.readFileSync('css/joe.css', 'utf8');
css = banner + css;
fs.writeFileSync('css/joe.css', css, 'utf8');
// Minify
const minified = new CleanCSS().minify(css);
fs.writeFileSync('css/joe.min.css', minified.styles, 'utf8');
}
async function buildJS() {
// Concatenate JS files
const jsFiles = [
"js/JsonObjectEditor.jquery.craydent.js",
"js/leaflet.js",
"js/esri-leaflet-geocoder.js",
"js/zebra_datepicker.196.min.js",
"js/jquery.timepicker.min.js"
];
await concat(jsFiles, 'js/joe.js');
// Add banner
let js = fs.readFileSync('js/joe.js', 'utf8');
js = banner + js;
fs.writeFileSync('js/joe.js', js, 'utf8');
// Minify
const minified = await terser.minify(js, { mangle: false, compress: true });
fs.writeFileSync('js/joe.min.js', minified.code, 'utf8');
}
async function main() {
await buildCSS();
await buildJS();
console.log('Build complete.');
}
main();