const esbuild = require('esbuild'); const path = require('path'); const args = process.argv.slice(2); let index = args.indexOf('--mode'); const mode = (index >= 0 ? args[index + 1] : undefined) || 'none'; index = args.indexOf('--target'); const target = (index >= 0 ? args[index + 1] : undefined) || 'node'; const watch = args.includes('--watch'); const check = !args.includes('--no-check'); let plugins = []; let TypeCheckerPlugin; if (check) { ({ EsbuildPlugin: TypeCheckerPlugin } = require('vite-esbuild-typescript-checker')); plugins.push( TypeCheckerPlugin({ checker: { async: false, eslint: { enabled: true, files: 'src/**/*.ts', options: { // cache: true, cacheLocation: path.join( __dirname, target === 'webworker' ? '.eslintcache.browser' : '.eslintcache', ), overrideConfigFile: path.join( __dirname, target === 'webworker' ? '.eslintrc.browser.json' : '.eslintrc.json', ), }, }, formatter: 'basic', typescript: { configFile: target === 'webworker' ? 'tsconfig.browser.json' : 'tsconfig.json', }, }, }), ); } esbuild .build({ bundle: true, entryPoints: ['src/extension.ts'], entryNames: '[dir]/gitlens', external: target === 'webworker' ? ['vscode', 'child_process', 'crypto', 'fs', 'stream', 'os', 'src/env/node/*'] : ['vscode', 'src/env/browser/*'], format: 'cjs', keepNames: true, logLevel: 'info', mainFields: target === 'webworker' ? ['browser', 'module', 'main'] : ['module', 'main'], minify: mode === 'production' ? true : false, outdir: target === 'webworker' ? 'dist/browser' : 'dist', // outfile: 'dist/gitlens.js', platform: target === 'webworker' ? 'browser' : target, sourcemap: true, // splitting: true, target: ['es2020', 'chrome91', 'node14.16'], treeShaking: true, tsconfig: target === 'webworker' ? 'tsconfig.browser.json' : 'tsconfig.json', watch: watch, plugins: plugins, }) .catch(() => process.exit(1));