diff --git a/.vscode/launch.json b/.vscode/launch.json index 6b21f9497a..6f97b6ac3f 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -8,7 +8,7 @@ "runtimeExecutable": "${execPath}", "args": ["--extensionDevelopmentPath=${workspaceRoot}"], "sourceMaps": true, - "outFiles": ["${workspaceRoot}/dist/*.js"], + "outFiles": ["${workspaceRoot}/dist/*.{js,mjs}"], "preLaunchTask": "packageDev" }, { @@ -33,7 +33,7 @@ }, "sourceMaps": true, "outFiles": [ - "${workspaceRoot}/dist/*.js", + "${workspaceRoot}/dist/*.{js,mjs}", "${workspaceRoot}/out/test/**/*.js" ], "resolveSourceMapLocations": [ @@ -66,7 +66,7 @@ "RoslynWaiterEnabled": "true" }, "sourceMaps": true, - "outFiles": ["${workspaceRoot}/dist/*.js", "${workspaceRoot}/out/test/**/*.js"], + "outFiles": ["${workspaceRoot}/dist/*.{js,mjs}", "${workspaceRoot}/out/test/**/*.js"], "resolveSourceMapLocations": ["${workspaceFolder}/**", "!**/node_modules/**"], "preLaunchTask": "packageDev", "internalConsoleOptions": "openOnSessionStart" @@ -94,7 +94,7 @@ "RoslynWaiterEnabled": "true" }, "sourceMaps": true, - "outFiles": ["${workspaceRoot}/dist/*.js", "${workspaceRoot}/out/test/**/*.js"], + "outFiles": ["${workspaceRoot}/dist/*.{js,mjs}", "${workspaceRoot}/out/test/**/*.js"], "resolveSourceMapLocations": ["${workspaceFolder}/**", "!**/node_modules/**"], "preLaunchTask": "packageDev", "internalConsoleOptions": "openOnSessionStart" @@ -121,7 +121,7 @@ "TEST_FILE_FILTER": "${file}" }, "sourceMaps": true, - "outFiles": ["${workspaceRoot}/dist/*.js", "${workspaceRoot}/out/test/**/*.js"], + "outFiles": ["${workspaceRoot}/dist/*.{js,mjs}", "${workspaceRoot}/out/test/**/*.js"], "resolveSourceMapLocations": ["${workspaceFolder}/**", "!**/node_modules/**"], "preLaunchTask": "packageDev", "internalConsoleOptions": "openOnSessionStart" @@ -147,7 +147,7 @@ "TEST_FILE_FILTER": "${file}" }, "sourceMaps": true, - "outFiles": ["${workspaceRoot}/dist/*.js", "${workspaceRoot}/out/test/**/*.js"], + "outFiles": ["${workspaceRoot}/dist/*.{js,mjs}", "${workspaceRoot}/out/test/**/*.js"], "resolveSourceMapLocations": ["${workspaceFolder}/**", "!**/node_modules/**"], "preLaunchTask": "packageDev" }, @@ -172,7 +172,7 @@ "TEST_FILE_FILTER": "${file}" }, "sourceMaps": true, - "outFiles": ["${workspaceRoot}/dist/*.js", "${workspaceRoot}/out/test/**/*.js"], + "outFiles": ["${workspaceRoot}/dist/*.{js,mjs}", "${workspaceRoot}/out/test/**/*.js"], "resolveSourceMapLocations": ["${workspaceFolder}/**", "!**/node_modules/**"], "preLaunchTask": "packageDev" }, diff --git a/esbuild.js b/esbuild.js index 54ff1c1803..f34c5912ac 100644 --- a/esbuild.js +++ b/esbuild.js @@ -48,12 +48,23 @@ async function main() { 'src/main.ts' ], bundle: true, - format: 'cjs', + format: 'esm', + banner: { + js: [ + `import { createRequire } from 'node:module';`, + `import { dirname as commonJsDirname } from 'node:path';`, + `import { fileURLToPath as commonJsFileURLToPath } from 'node:url';`, + `const require = createRequire(import.meta.url);`, + `// Temporary CommonJS globals until bundled source usages are converted to ESM.`, + `const __filename = commonJsFileURLToPath(import.meta.url);`, + `const __dirname = commonJsDirname(__filename);`, + ].join('\n'), + }, minify: production, sourcemap: !production, sourcesContent: false, platform: 'node', - outfile: 'dist/extension.js', + outfile: 'dist/extension.mjs', external: ['vscode', 'applicationinsights-native-metrics', '@opentelemetry/tracing'], logLevel: 'info', plugins: [ diff --git a/msbuild/signing/signJs/signJs.proj b/msbuild/signing/signJs/signJs.proj index c2cd518069..502447df9a 100644 --- a/msbuild/signing/signJs/signJs.proj +++ b/msbuild/signing/signJs/signJs.proj @@ -21,5 +21,8 @@ MicrosoftSHA2 + + MicrosoftSHA2 + \ No newline at end of file diff --git a/package.json b/package.json index c1fcd5e961..0fc62c1471 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "xamlTools": "18.10.12014.341", "testDiscovery": "9.9.223-ge3811b" }, - "main": "./dist/extension", + "main": "./dist/extension.mjs", "l10n": "./l10n", "brokeredServices": [ { @@ -81,7 +81,7 @@ "omnisharptest": "npm run packageDev && npx ts-node tasks/tests/omnisharptest.ts", "omnisharptest:integration": "npm run packageDev && npx ts-node tasks/tests/omnisharptestIntegration.ts", "omnisharptest:unit": "npm run compileDev && npx ts-node tasks/tests/omnisharptestUnit.ts", - "package": "npm run compile && npm run signJs && node esbuild.js --production", + "package": "npm run compile && node esbuild.js --production && npm run signJs", "packageDev": "npm run compileDev && node esbuild.js", "prepare": "npm run installDependencies", "profiling": "npm run package && npx ts-node tasks/profiling/profiling.ts",