UNPKG

jsonl-editor

Version:

Edit individual JSON lines in JSONL files

81 lines (72 loc) 1.76 kB
const esbuild = require("esbuild"); const fs = require("fs"); const path = require("path"); const production = process.argv.includes('--production'); const watch = process.argv.includes('--watch'); /** * @type {import('esbuild').Plugin} */ const esbuildProblemMatcherPlugin = { name: 'esbuild-problem-matcher', setup(build) { build.onStart(() => { console.log('[watch] build started'); }); build.onEnd((result) => { result.errors.forEach(({ text, location }) => { console.error(`✘ [ERROR] ${text}`); console.error(` ${location.file}:${location.line}:${location.column}:`); }); console.log('[watch] build finished'); }); }, }; /** * @type {import('esbuild').Plugin} */ const copyHtmlPlugin = { name: 'copy-html', setup(build) { build.onEnd(() => { const srcPath = path.join(__dirname, 'src', 'preview-template.html'); const destPath = path.join(__dirname, 'dist', 'preview-template.html'); // Ensure dist directory exists if (!fs.existsSync(path.dirname(destPath))) { fs.mkdirSync(path.dirname(destPath), { recursive: true }); } // Copy HTML file fs.copyFileSync(srcPath, destPath); }); }, }; async function main() { const ctx = await esbuild.context({ entryPoints: [ 'src/extension.ts' ], bundle: true, format: 'cjs', minify: production, sourcemap: !production, sourcesContent: false, platform: 'node', outfile: 'dist/extension.js', external: ['vscode'], logLevel: 'silent', plugins: [ copyHtmlPlugin, /* add to the end of plugins array */ esbuildProblemMatcherPlugin, ], }); if (watch) { await ctx.watch(); } else { await ctx.rebuild(); await ctx.dispose(); } } main().catch(e => { console.error(e); process.exit(1); });