UNPKG

muddler

Version:

A minifier for hackmud scripts

44 lines (36 loc) 1.31 kB
import * as ts from 'typescript' import { replaceInStrIfScriptor } from './utils' import path = require('path') import fs = require('fs') const config = { "compilerOptions": { "target": "es6", "module": "ES2015", "outDir": "dist", "moduleResolution": "node", "lib": ["es7", "dom"], "declaration": false, "sourceMap": false, "removeComments": true, "isolatedModules": false, "strict": false, "noImplicitAny": false, "skipLibCheck": true } } const nameFirstFunction = str => str.replace(/^.*\(/, "function muddled("); const addToGlobal = str => str + '\nwindow["muddled"] = muddled;'; const prepareCode = (code) => addToGlobal( nameFirstFunction( replaceInStrIfScriptor('#', '$', code))); export function transpile(program, filename, outFilename) { const fileStr = fs.readFileSync(filename, 'utf8'); let preparedCode = prepareCode(fileStr) const ext = path.extname(filename); if (ext === '.ts') preparedCode = ts.transpileModule(preparedCode, config as any).outputText; if (program.verbose) console.log("Prepared Js: ", preparedCode); fs.writeFileSync(`${outFilename}.temp.js`, preparedCode); }