Merge pull request #260466 from mjbvz/sick-marmoset

Convert esbuild scripts to modules
This commit is contained in:
Matt Bierner
2025-08-07 21:57:27 -07:00
committed by GitHub
19 changed files with 64 additions and 63 deletions

View File

@@ -511,12 +511,12 @@ function translatePackageJSON(packageJSON, packageNLSPath) {
const extensionsPath = path_1.default.join(root, 'extensions');
// Additional projects to run esbuild on. These typically build code for webviews
const esbuildMediaScripts = [
'markdown-language-features/esbuild-notebook.js',
'markdown-language-features/esbuild-preview.js',
'markdown-math/esbuild.js',
'notebook-renderers/esbuild.js',
'ipynb/esbuild.js',
'simple-browser/esbuild-preview.js',
'markdown-language-features/esbuild-notebook.mjs',
'markdown-language-features/esbuild-preview.mjs',
'markdown-math/esbuild.mjs',
'notebook-renderers/esbuild.mjs',
'ipynb/esbuild.mjs',
'simple-browser/esbuild-preview.mjs',
];
async function webpackExtensions(taskName, isWatch, webpackConfigLocations) {
const webpack = require('webpack');

View File

@@ -561,12 +561,12 @@ const extensionsPath = path.join(root, 'extensions');
// Additional projects to run esbuild on. These typically build code for webviews
const esbuildMediaScripts = [
'markdown-language-features/esbuild-notebook.js',
'markdown-language-features/esbuild-preview.js',
'markdown-math/esbuild.js',
'notebook-renderers/esbuild.js',
'ipynb/esbuild.js',
'simple-browser/esbuild-preview.js',
'markdown-language-features/esbuild-notebook.mjs',
'markdown-language-features/esbuild-preview.mjs',
'markdown-math/esbuild.mjs',
'notebook-renderers/esbuild.mjs',
'ipynb/esbuild.mjs',
'simple-browser/esbuild-preview.mjs',
];
export async function webpackExtensions(taskName: string, isWatch: boolean, webpackConfigLocations: { configPath: string; outputRoot?: string }[]) {

View File

@@ -15,8 +15,7 @@ import pluginJsdoc from 'eslint-plugin-jsdoc';
import pluginHeader from 'eslint-plugin-header';
pluginHeader.rules.header.meta.schema = false;
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const ignores = fs.readFileSync(path.join(__dirname, '.eslint-ignore'), 'utf8')
const ignores = fs.readFileSync(path.join(import.meta.dirname, '.eslint-ignore'), 'utf8')
.toString()
.split(/\r\n|\n/)
.filter(line => line && !line.startsWith('#'));

View File

@@ -3,13 +3,11 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
// @ts-check
/**
* @fileoverview Common build script for extension scripts used in in webviews.
*/
const path = require('path');
const esbuild = require('esbuild');
import path from 'node:path';
import esbuild from 'esbuild';
/**
* @typedef {Partial<import('esbuild').BuildOptions> & {
@@ -62,7 +60,7 @@ async function tryBuild(options, didBuild) {
* @param {string[]} args
* @param {(outDir: string) => unknown} [didBuild]
*/
module.exports.run = async function (config, args, didBuild) {
export async function run(config, args, didBuild) {
let outdir = config.outdir;
const outputRootIndex = args.indexOf('--outputRoot');
if (outputRootIndex >= 0) {
@@ -84,10 +82,9 @@ module.exports.run = async function (config, args, didBuild) {
const isWatch = args.indexOf('--watch') >= 0;
if (isWatch) {
await tryBuild(resolvedOptions, didBuild);
const watcher = require('@parcel/watcher');
const watcher = await import('@parcel/watcher');
watcher.subscribe(config.srcDir, () => tryBuild(resolvedOptions, didBuild));
} else {
return build(resolvedOptions, didBuild).catch(() => process.exit(1));
}
};
}

View File

@@ -7,4 +7,4 @@ extension.webpack.config.js
extension-browser.webpack.config.js
package-lock.json
.gitignore
esbuild.js
esbuild.*

View File

@@ -2,14 +2,14 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
//@ts-check
// @ts-check
import path from 'node:path';
import { run } from '../esbuild-webview-common.mjs';
const path = require('path');
const srcDir = path.join(import.meta.dirname, 'notebook-src');
const outDir = path.join(import.meta.dirname, 'notebook-out');
const srcDir = path.join(__dirname, 'notebook-src');
const outDir = path.join(__dirname, 'notebook-out');
require('../esbuild-webview-common').run({
run({
entryPoints: [
path.join(srcDir, 'cellAttachmentRenderer.ts'),
],

View File

@@ -158,7 +158,7 @@
"scripts": {
"compile": "npx gulp compile-extension:ipynb && npm run build-notebook",
"watch": "npx gulp watch-extension:ipynb",
"build-notebook": "node ./esbuild"
"build-notebook": "node ./esbuild.mjs"
},
"dependencies": {
"@enonic/fnv-plus": "^1.3.0",

View File

@@ -3,12 +3,13 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
// @ts-check
const path = require('path');
import path from 'path';
import { run } from '../esbuild-webview-common.mjs';
const srcDir = path.join(__dirname, 'notebook');
const outDir = path.join(__dirname, 'notebook-out');
const srcDir = path.join(import.meta.dirname, 'notebook');
const outDir = path.join(import.meta.dirname, 'notebook-out');
require('../esbuild-webview-common').run({
run({
entryPoints: [
path.join(srcDir, 'index.ts'),
],

View File

@@ -3,12 +3,13 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
// @ts-check
const path = require('path');
import path from 'path';
import { run } from '../esbuild-webview-common.mjs';
const srcDir = path.join(__dirname, 'preview-src');
const outDir = path.join(__dirname, 'media');
const srcDir = path.join(import.meta.dirname, 'preview-src');
const outDir = path.join(import.meta.dirname, 'media');
require('../esbuild-webview-common').run({
run({
entryPoints: [
path.join(srcDir, 'index.ts'),
path.join(srcDir, 'pre'),

View File

@@ -760,10 +760,10 @@
"watch": "npm run build-preview && gulp watch-extension:markdown-language-features watch-extension:markdown-language-features-languageService",
"vscode:prepublish": "npm run build-ext && npm run build-preview",
"build-ext": "node ../../node_modules/gulp/bin/gulp.js --gulpfile ../../build/gulpfile.extensions.js compile-extension:markdown-language-features ./tsconfig.json",
"build-notebook": "node ./esbuild-notebook",
"build-preview": "node ./esbuild-preview",
"build-notebook": "node ./esbuild-notebook.mjs",
"build-preview": "node ./esbuild-preview.mjs",
"compile-web": "npx webpack-cli --config extension-browser.webpack.config --mode none",
"watch-web": "npx webpack-cli --config extension-browser.webpack.config --mode none --watch --info-verbosity verbose"
"watch-web": "npx webpack-cli --config extension-browser.webpack.config --mode none --watch"
},
"dependencies": {
"@vscode/extension-telemetry": "^0.9.8",

View File

@@ -2,7 +2,7 @@ src/**
notebook/**
extension-browser.webpack.config.js
extension.webpack.config.js
esbuild.js
esbuild.*
cgmanifest.json
package-lock.json
webpack.config.js

View File

@@ -4,20 +4,21 @@
*--------------------------------------------------------------------------------------------*/
//@ts-check
const path = require('path');
const fse = require('fs-extra');
import path from 'path';
import fse from 'fs-extra';
import { run } from '../esbuild-webview-common.mjs';
const args = process.argv.slice(2);
const srcDir = path.join(__dirname, 'notebook');
const outDir = path.join(__dirname, 'notebook-out');
const srcDir = path.join(import.meta.dirname, 'notebook');
const outDir = path.join(import.meta.dirname, 'notebook-out');
function postBuild(outDir) {
fse.copySync(
path.join(__dirname, 'node_modules', 'katex', 'dist', 'katex.min.css'),
path.join(import.meta.dirname, 'node_modules', 'katex', 'dist', 'katex.min.css'),
path.join(outDir, 'katex.min.css'));
const fontsDir = path.join(__dirname, 'node_modules', 'katex', 'dist', 'fonts');
const fontsDir = path.join(import.meta.dirname, 'node_modules', 'katex', 'dist', 'fonts');
const fontsOutDir = path.join(outDir, 'fonts/');
fse.mkdirSync(fontsOutDir, { recursive: true });
@@ -29,7 +30,7 @@ function postBuild(outDir) {
}
}
require('../esbuild-webview-common').run({
run({
entryPoints: [
path.join(srcDir, 'katex.ts'),
],

View File

@@ -108,7 +108,7 @@
"scripts": {
"compile": "npm run build-notebook",
"watch": "npm run build-notebook",
"build-notebook": "node ./esbuild"
"build-notebook": "node ./esbuild.mjs"
},
"devDependencies": {
"@types/markdown-it": "^0.0.0",

View File

@@ -2,5 +2,5 @@ src/**
notebook/**
tsconfig.json
.gitignore
esbuild.js
esbuild.*
src/**

View File

@@ -3,12 +3,13 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
// @ts-check
const path = require('path');
import path from 'path';
import { run } from '../esbuild-webview-common.mjs';
const srcDir = path.join(__dirname, 'src');
const outDir = path.join(__dirname, 'renderer-out');
const srcDir = path.join(import.meta.dirname, 'src');
const outDir = path.join(import.meta.dirname, 'renderer-out');
require('../esbuild-webview-common').run({
run({
entryPoints: [
path.join(srcDir, 'index.ts'),
],

View File

@@ -44,7 +44,7 @@
"scripts": {
"compile": "npx gulp compile-extension:notebook-renderers && npm run build-notebook",
"watch": "npx gulp compile-watch:notebook-renderers",
"build-notebook": "node ./esbuild"
"build-notebook": "node ./esbuild.mjs"
},
"dependencies": {},
"devDependencies": {

View File

@@ -11,4 +11,4 @@ cgmanifest.json
package-lock.json
preview-src/**
webpack.config.js
esbuild-preview.js
esbuild-*

View File

@@ -3,15 +3,16 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
// @ts-check
const path = require('path');
import path from 'path';
import { run } from '../esbuild-webview-common.mjs';
const srcDir = path.join(__dirname, 'preview-src');
const outDir = path.join(__dirname, 'media');
const srcDir = path.join(import.meta.dirname, 'preview-src');
const outDir = path.join(import.meta.dirname, 'media');
require('../esbuild-webview-common').run({
run({
entryPoints: {
'index': path.join(srcDir, 'index.ts'),
'codicon': path.join(__dirname, 'node_modules', '@vscode', 'codicons', 'dist', 'codicon.css'),
'codicon': path.join(import.meta.dirname, 'node_modules', '@vscode', 'codicons', 'dist', 'codicon.css'),
},
srcDir,
outdir: outDir,

View File

@@ -61,7 +61,7 @@
"watch": "npm run build-preview && gulp watch-extension:markdown-language-features",
"vscode:prepublish": "npm run build-ext && npm run build-preview",
"build-ext": "node ../../node_modules/gulp/bin/gulp.js --gulpfile ../../build/gulpfile.extensions.js compile-extension:markdown-language-features ./tsconfig.json",
"build-preview": "node ./esbuild-preview",
"build-preview": "node ./esbuild-preview.mjs",
"compile-web": "npx webpack-cli --config extension-browser.webpack.config --mode none",
"watch-web": "npx webpack-cli --config extension-browser.webpack.config --mode none --watch --info-verbosity verbose"
},