import * as esbuild from 'esbuild'; import { copyFileSync, mkdirSync, existsSync } from 'fs'; import { resolve, dirname } from 'path'; import { fileURLToPath } from 'url'; const __dirname = dirname(fileURLToPath(import.meta.url)); const rootDir = resolve(__dirname, '..'); const outDir = resolve(rootDir, 'out'); if (!existsSync(outDir)) { mkdirSync(outDir, { recursive: true }); } await esbuild.build({ entryPoints: [resolve(rootDir, 'src', 'extension.ts')], bundle: true, outfile: resolve(outDir, 'extension.js'), external: [ 'vscode', 'eslint', 'stylelint', 'child_process', 'fs', 'path', 'url', 'os', ], format: 'cjs', platform: 'node', target: 'node22', minify: true, sourcemap: false, treeShaking: true, }); /* copy webview JS files */ const viewsSrc = resolve(rootDir, 'src', 'views'); const webviewDir = resolve(outDir, 'webview'); if (existsSync(viewsSrc)) { const files = ['setupView.js']; for (const f of files) { const src = resolve(viewsSrc, f); const dest = resolve(webviewDir, f); if (existsSync(src)) { mkdirSync(dirname(dest), { recursive: true }); copyFileSync(src, dest); } } } console.log('Build complete.');