imba
Version:
31 lines (26 loc) • 1.15 kB
JavaScript
const fs = require('fs');
const esbuild = require('esbuild');
async function bundle(options){
options.resolveExtensions = ['.mjs','.imba','.ts','.cjs','.js','.css','.json'];
options.target = options.target || ['es2020']; // ['chrome58', 'firefox57', 'safari11', 'edge16'];
options.bundle = true;
let res = await esbuild.build(options);
var parser = require('../build/grammar.js').parser;
var source = parser.generate();
var esmSource = source.replace(
/\n\nif \(typeof require !== 'undefined' && typeof exports !== 'undefined'\) \{\nexports\.parser = parser;\nexports\.Parser = parser\.Parser;\nexports\.parse = function \(\) \{ return parser\.parse\.apply\(parser, arguments\); \};\n\}\s*$/,
""
);
fs.writeFileSync(
__dirname + "/../src/compiler/parser.mjs",
esmSource + "\n\nexport { parser };\nexport const Parser = parser.Parser;\nexport function parse() { return parser.parse.apply(parser, arguments); }\n"
);
console.log('built parser');
}
bundle({
entryPoints: ['src/compiler/grammar.mjs'],
outfile: 'build/grammar.js',
sourcemap: false,
format: 'cjs',
platform: 'node'
})