summaryrefslogtreecommitdiff
path: root/packages/vscode-ide-companion/esbuild.js
diff options
context:
space:
mode:
authorchristine betts <[email protected]>2025-07-14 15:34:44 +0000
committerGitHub <[email protected]>2025-07-14 15:34:44 +0000
commite9d680e8a45b18152042214891132eec60e4a09b (patch)
treef745dd75afd81079369b4234ecbf34f1adad396e /packages/vscode-ide-companion/esbuild.js
parent64f1d80b26af25708356e8a743ea7fab1496c7e9 (diff)
Introduce VSCode companion extension (#3917)
Diffstat (limited to 'packages/vscode-ide-companion/esbuild.js')
-rw-r--r--packages/vscode-ide-companion/esbuild.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/packages/vscode-ide-companion/esbuild.js b/packages/vscode-ide-companion/esbuild.js
new file mode 100644
index 00000000..522542db
--- /dev/null
+++ b/packages/vscode-ide-companion/esbuild.js
@@ -0,0 +1,62 @@
+/**
+ * @license
+ * Copyright 2025 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+const esbuild = require('esbuild');
+
+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');
+ });
+ },
+};
+
+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: [
+ /* 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);
+});