Skip to content
Snippets Groups Projects
terser.js 2.19 KiB
Newer Older
const { minify } = require("terser");
const fs = require('fs');

const jsPath = "javascript/build/dist/"
Benjamin Baer's avatar
Benjamin Baer committed
const extPath = "extension/Resources/Public/JavaScript/"
const cssPath = "extension/Resources/Public/Css/"
Benjamin Baer's avatar
Benjamin Baer committed

const todos = [
    {
        name: "qfq",
Benjamin Baer's avatar
Benjamin Baer committed
        input: "javascript/build/dist/qfq.debug.js",
Benjamin Baer's avatar
Benjamin Baer committed
        output: jsPath + "qfq.min.js"
    },{
        name: "qfqFabric",
        input: "javascript/src/Plugins/qfq.fabric.js",
        output: jsPath + "qfq.fabric.min.js"
    },{
        name: "qfqValidator",
        input: "javascript/src/Plugins/validator.js",
        output: jsPath + "validator.min.js"
    },{
        name: "codemirror",
        input: "node_modules/codemirror/lib/codemirror.js",
        output: extPath + "codemirror.min.js"
    },{
        name: "codemirror sql",
        input: "node_modules/codemirror/lib/codemirror.js",
        output: extPath + "code-mirror-mode/sql/sql.min.js",
        mkdir: extPath + "code-mirror-mode/sql"
    },{
        name: "qfq css bs",
        input: "less/dist/qfq-bs.css",
        output: cssPath + "qfq-bs.min.css"
    },{
        name: "qfq css letter",
        input: "less/dist/qfq-letter.css",
        output: cssPath + "qfq-letter.min.css"
    },{
        name: "qfq css plain",
        input: "less/dist/qfq-plain.css",
        output: cssPath + "qfq-plain.min.css"
    },{
        name: "tablestorter bs css",
        input: "less/dist/tablesorter-bootstrap.css",
        output: cssPath + "tablesorter-bootstrap.min.css"
Benjamin Baer's avatar
Benjamin Baer committed
    }
]
Benjamin Baer's avatar
Benjamin Baer committed
const defaultOptions = {
    mangle: {
        properties: true,
    }
};

Benjamin Baer's avatar
Benjamin Baer committed
async function minifySource(input, output, options) {
    let sourceCode = fs.readFileSync(input, 'utf8');
Benjamin Baer's avatar
Benjamin Baer committed
    minify(sourceCode, options)
        .then( (res) => callWriteFile(output, res))    
}

function callWriteFile(output, sourceCode) {
    //console.log("Source Code", sourceCode)
    fs.writeFileSync(output, sourceCode.code)
}

Benjamin Baer's avatar
Benjamin Baer committed
for (const todo of todos) {
    console.log("minifying " + todo.name)
Benjamin Baer's avatar
Benjamin Baer committed
    let options = defaultOptions
    if(todo.hasOwnProperty("options")) options = todo.options
Benjamin Baer's avatar
Benjamin Baer committed
    if(todo.hasOwnProperty("mkdir")) {
        fs.mkdirSync(todo.mkdir, { recursive: true })
Benjamin Baer's avatar
Benjamin Baer committed
    }
Benjamin Baer's avatar
Benjamin Baer committed
    minifySource(todo.input, todo.output, options)
Benjamin Baer's avatar
Benjamin Baer committed
}