From e95f8744c97ba20e50f38a943109026e9ab891c8 Mon Sep 17 00:00:00 2001 From: "Anthony Y. Zhu" Date: Fri, 25 Jul 2025 23:21:55 -0400 Subject: [PATCH 1/3] feat: migrate changes from https://github.com/modernweb-dev/dev-server-esbuild/commit/cc6d80e1c61b564800fbc84e34a53d321335b070 feat: auto resolve tsconfig as tsconfig.json if ts is set to true --- packages/dev-server-esbuild/package.json | 1 + .../dev-server-esbuild/src/EsbuildPlugin.ts | 5 +- .../src/esbuildPluginFactory.ts | 10 +++- ...g-with-experimental-decorators-parent.json | 3 + packages/dev-server-esbuild/test/ts.test.ts | 55 +++++++++++++++++++ 5 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 packages/dev-server-esbuild/test/fixture/tsconfig-with-experimental-decorators-parent.json diff --git a/packages/dev-server-esbuild/package.json b/packages/dev-server-esbuild/package.json index bc24c9efa..defa90472 100644 --- a/packages/dev-server-esbuild/package.json +++ b/packages/dev-server-esbuild/package.json @@ -54,6 +54,7 @@ "@mdn/browser-compat-data": "^4.0.0", "@web/dev-server-core": "^0.7.4", "esbuild": "^0.25.0", + "get-tsconfig": "^4.10.1", "parse5": "^6.0.1", "ua-parser-js": "^1.0.33" }, diff --git a/packages/dev-server-esbuild/src/EsbuildPlugin.ts b/packages/dev-server-esbuild/src/EsbuildPlugin.ts index 5143101bc..f1e4183fc 100644 --- a/packages/dev-server-esbuild/src/EsbuildPlugin.ts +++ b/packages/dev-server-esbuild/src/EsbuildPlugin.ts @@ -18,7 +18,7 @@ import { setTextContent, } from '@web/dev-server-core/dist/dom5'; import { parse as parseHtml, serialize as serializeHtml } from 'parse5'; - +import { parseTsconfig } from 'get-tsconfig'; import { getEsbuildTarget } from './getEsbuildTarget.js'; const filteredWarnings = ['Unsupported source map comment']; @@ -61,7 +61,8 @@ export class EsbuildPlugin implements Plugin { this.config = config; this.logger = logger; if (this.esbuildConfig.tsconfig) { - this.tsconfigRaw = await promisify(fs.readFile)(this.esbuildConfig.tsconfig, 'utf8'); + const parsedTsconfig = await parseTsconfig(this.esbuildConfig.tsconfig); + this.tsconfigRaw = JSON.stringify(parsedTsconfig); } } diff --git a/packages/dev-server-esbuild/src/esbuildPluginFactory.ts b/packages/dev-server-esbuild/src/esbuildPluginFactory.ts index 992a54871..c080ef764 100644 --- a/packages/dev-server-esbuild/src/esbuildPluginFactory.ts +++ b/packages/dev-server-esbuild/src/esbuildPluginFactory.ts @@ -62,8 +62,16 @@ export function esbuildPlugin(args: EsBuildPluginArgs = {}): Plugin { jsxFactory: args.jsxFactory, jsxFragment: args.jsxFragment, define: args.define, - tsconfig: args.tsconfig, + tsconfig: getTsconfig(args), banner: args.banner, footer: args.footer, }); } + +function getTsconfig (args: EsBuildPluginArgs): string | undefined { + if (args.tsconfig) { + return args.tsconfig + } + + return args.ts ? 'tsconfig.json' : undefined; +} \ No newline at end of file diff --git a/packages/dev-server-esbuild/test/fixture/tsconfig-with-experimental-decorators-parent.json b/packages/dev-server-esbuild/test/fixture/tsconfig-with-experimental-decorators-parent.json new file mode 100644 index 000000000..7fab82400 --- /dev/null +++ b/packages/dev-server-esbuild/test/fixture/tsconfig-with-experimental-decorators-parent.json @@ -0,0 +1,3 @@ +{ + "extends": "./tsconfig-with-experimental-decorators.json" +} diff --git a/packages/dev-server-esbuild/test/ts.test.ts b/packages/dev-server-esbuild/test/ts.test.ts index ce2ec0295..dbce3d1c9 100644 --- a/packages/dev-server-esbuild/test/ts.test.ts +++ b/packages/dev-server-esbuild/test/ts.test.ts @@ -104,6 +104,61 @@ class Bar { } }); + it('transforms TS decorators with parent tsconfig', async () => { + const { server, host } = await createTestServer({ + rootDir: __dirname, + plugins: [ + { + name: 'test', + serve(context) { + if (context.path === '/foo.ts') { + return ` +@foo +class Bar { + @prop + x = 'y'; +}`; + } + }, + }, + esbuildPlugin({ + ts: true, + tsconfig: path.join( + __dirname, + 'fixture', + 'tsconfig-with-experimental-decorators-parent.json', + ), + }), + ], + }); + + try { + const response = await fetch(`${host}/foo.ts`); + const text = await response.text(); + + expect(response.status).to.equal(200); + expect(response.headers.get('content-type')).to.equal( + 'application/javascript; charset=utf-8', + ); + expectIncludes(text, '__decorate'); + expectIncludes(text, '__publicField(this, "x", "y");'); + expectIncludes( + text, + `__decorateClass([ + prop +], Bar.prototype, "x", 2);`, + ); + expectIncludes( + text, + `Bar = __decorateClass([ + foo +], Bar);`, + ); + } finally { + server.stop(); + } + }); + it('resolves relative ending with .js to .ts files', async () => { const { server, host } = await createTestServer({ rootDir: path.join(__dirname, 'fixture'), From 13749f9540effd2fabf799d053430f87b23e2e8f Mon Sep 17 00:00:00 2001 From: anthony-y-zhu14 Date: Fri, 25 Jul 2025 23:47:58 -0400 Subject: [PATCH 2/3] chore: update lock file, auto choose tsconfig.json if ts is true but --- package-lock.json | 351 ++---------------- .../src/esbuildPluginFactory.ts | 6 +- 2 files changed, 25 insertions(+), 332 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5100c88b3..9ee0809bb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15966,6 +15966,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-tsconfig": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz", + "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==", + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/get-uri": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz", @@ -16253,16 +16265,6 @@ "dev": true, "license": "MIT" }, - "node_modules/graphql": { - "version": "16.8.1", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz", - "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==", - "optional": true, - "peer": true, - "engines": { - "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" - } - }, "node_modules/gray-matter": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", @@ -29328,6 +29330,15 @@ "node": ">= 0.6" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/resp-modifier": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", @@ -33089,18 +33100,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/unbzip2-stream": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", - "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "buffer": "^5.2.1", - "through": "^2.3.8" - } - }, "node_modules/unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", @@ -35838,6 +35837,7 @@ "@mdn/browser-compat-data": "^4.0.0", "@web/dev-server-core": "^0.7.4", "esbuild": "^0.25.0", + "get-tsconfig": "^4.10.1", "parse5": "^6.0.1", "ua-parser-js": "^1.0.33" }, @@ -38527,11 +38527,6 @@ "node": ">=18.0.0" } }, - "packages/test-runner-module-mocking/node_modules/es-module-lexer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", - "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==" - }, "packages/test-runner-playwright": { "name": "@web/test-runner-playwright", "version": "0.11.1", @@ -38588,30 +38583,6 @@ "node": ">=18.0.0" } }, - "packages/test-runner-saucelabs/node_modules/@puppeteer/browsers": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.3.0.tgz", - "integrity": "sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==", - "license": "Apache-2.0", - "optional": true, - "peer": true, - "dependencies": { - "debug": "^4.3.5", - "extract-zip": "^2.0.1", - "progress": "^2.0.3", - "proxy-agent": "^6.4.0", - "semver": "^7.6.3", - "tar-fs": "^3.0.6", - "unbzip2-stream": "^1.4.3", - "yargs": "^17.7.2" - }, - "bin": { - "browsers": "lib/cjs/main-cli.js" - }, - "engines": { - "node": ">=18" - } - }, "packages/test-runner-saucelabs/node_modules/@sindresorhus/is": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", @@ -38668,41 +38639,6 @@ "node": ">=8" } }, - "packages/test-runner-saucelabs/node_modules/chromium-bidi": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.6.3.tgz", - "integrity": "sha512-qXlsCmpCZJAnoTYI83Iu6EdYQpMYdVkCfq08KDh2pmlVqK5t5IA9mGs4/LwCwp4fqisSOMXZxP3HIh8w8aRn0A==", - "license": "Apache-2.0", - "optional": true, - "peer": true, - "dependencies": { - "mitt": "3.0.1", - "urlpattern-polyfill": "10.0.0", - "zod": "3.23.8" - }, - "peerDependencies": { - "devtools-protocol": "*" - } - }, - "packages/test-runner-saucelabs/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "packages/test-runner-saucelabs/node_modules/decompress-response": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", @@ -38725,14 +38661,6 @@ "node": ">=10" } }, - "packages/test-runner-saucelabs/node_modules/devtools-protocol": { - "version": "0.0.1312386", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1312386.tgz", - "integrity": "sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==", - "license": "BSD-3-Clause", - "optional": true, - "peer": true - }, "packages/test-runner-saucelabs/node_modules/get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", @@ -38844,22 +38772,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/test-runner-saucelabs/node_modules/mitt": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", - "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", - "license": "MIT", - "optional": true, - "peer": true - }, - "packages/test-runner-saucelabs/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT", - "optional": true, - "peer": true - }, "packages/test-runner-saucelabs/node_modules/normalize-url": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", @@ -38893,24 +38805,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/test-runner-saucelabs/node_modules/puppeteer-core": { - "version": "22.15.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.15.0.tgz", - "integrity": "sha512-cHArnywCiAAVXa3t4GGL2vttNxh7GqXtIYGym99egkNJ3oG//wL9LkvO4WE8W1TJe95t1F1ocu9X4xWaGsOKOA==", - "license": "Apache-2.0", - "optional": true, - "peer": true, - "dependencies": { - "@puppeteer/browsers": "2.3.0", - "chromium-bidi": "0.6.3", - "debug": "^4.3.6", - "devtools-protocol": "0.0.1312386", - "ws": "^8.18.0" - }, - "engines": { - "node": ">=18" - } - }, "packages/test-runner-saucelabs/node_modules/responselike": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", @@ -38940,22 +38834,6 @@ "sl": "bin/sl" } }, - "packages/test-runner-saucelabs/node_modules/tar-fs": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.8.tgz", - "integrity": "sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - }, - "optionalDependencies": { - "bare-fs": "^4.0.1", - "bare-path": "^3.0.0" - } - }, "packages/test-runner-saucelabs/node_modules/undici-types": { "version": "6.19.8", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", @@ -39012,40 +38890,6 @@ } } }, - "packages/test-runner-saucelabs/node_modules/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "packages/test-runner-saucelabs/node_modules/zod": { - "version": "3.23.8", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", - "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", - "license": "MIT", - "optional": true, - "peer": true, - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, "packages/test-runner-selenium": { "name": "@web/test-runner-selenium", "version": "0.7.0", @@ -39115,30 +38959,6 @@ "node": ">=18.0.0" } }, - "packages/test-runner-webdriver/node_modules/@puppeteer/browsers": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.3.0.tgz", - "integrity": "sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==", - "license": "Apache-2.0", - "optional": true, - "peer": true, - "dependencies": { - "debug": "^4.3.5", - "extract-zip": "^2.0.1", - "progress": "^2.0.3", - "proxy-agent": "^6.4.0", - "semver": "^7.6.3", - "tar-fs": "^3.0.6", - "unbzip2-stream": "^1.4.3", - "yargs": "^17.7.2" - }, - "bin": { - "browsers": "lib/cjs/main-cli.js" - }, - "engines": { - "node": ">=18" - } - }, "packages/test-runner-webdriver/node_modules/@types/node": { "version": "20.17.30", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.30.tgz", @@ -39148,49 +38968,6 @@ "undici-types": "~6.19.2" } }, - "packages/test-runner-webdriver/node_modules/chromium-bidi": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.6.3.tgz", - "integrity": "sha512-qXlsCmpCZJAnoTYI83Iu6EdYQpMYdVkCfq08KDh2pmlVqK5t5IA9mGs4/LwCwp4fqisSOMXZxP3HIh8w8aRn0A==", - "license": "Apache-2.0", - "optional": true, - "peer": true, - "dependencies": { - "mitt": "3.0.1", - "urlpattern-polyfill": "10.0.0", - "zod": "3.23.8" - }, - "peerDependencies": { - "devtools-protocol": "*" - } - }, - "packages/test-runner-webdriver/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "packages/test-runner-webdriver/node_modules/devtools-protocol": { - "version": "0.0.1312386", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1312386.tgz", - "integrity": "sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==", - "license": "BSD-3-Clause", - "optional": true, - "peer": true - }, "packages/test-runner-webdriver/node_modules/is-plain-obj": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", @@ -39203,56 +38980,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/test-runner-webdriver/node_modules/mitt": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", - "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", - "license": "MIT", - "optional": true, - "peer": true - }, - "packages/test-runner-webdriver/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT", - "optional": true, - "peer": true - }, - "packages/test-runner-webdriver/node_modules/puppeteer-core": { - "version": "22.15.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.15.0.tgz", - "integrity": "sha512-cHArnywCiAAVXa3t4GGL2vttNxh7GqXtIYGym99egkNJ3oG//wL9LkvO4WE8W1TJe95t1F1ocu9X4xWaGsOKOA==", - "license": "Apache-2.0", - "optional": true, - "peer": true, - "dependencies": { - "@puppeteer/browsers": "2.3.0", - "chromium-bidi": "0.6.3", - "debug": "^4.3.6", - "devtools-protocol": "0.0.1312386", - "ws": "^8.18.0" - }, - "engines": { - "node": ">=18" - } - }, - "packages/test-runner-webdriver/node_modules/tar-fs": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.8.tgz", - "integrity": "sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - }, - "optionalDependencies": { - "bare-fs": "^4.0.1", - "bare-path": "^3.0.0" - } - }, "packages/test-runner-webdriver/node_modules/undici-types": { "version": "6.19.8", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", @@ -39309,40 +39036,6 @@ } } }, - "packages/test-runner-webdriver/node_modules/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "packages/test-runner-webdriver/node_modules/zod": { - "version": "3.23.8", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", - "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", - "license": "MIT", - "optional": true, - "peer": true, - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, "packages/test-runner/node_modules/array-back": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", diff --git a/packages/dev-server-esbuild/src/esbuildPluginFactory.ts b/packages/dev-server-esbuild/src/esbuildPluginFactory.ts index c080ef764..351b86141 100644 --- a/packages/dev-server-esbuild/src/esbuildPluginFactory.ts +++ b/packages/dev-server-esbuild/src/esbuildPluginFactory.ts @@ -62,16 +62,16 @@ export function esbuildPlugin(args: EsBuildPluginArgs = {}): Plugin { jsxFactory: args.jsxFactory, jsxFragment: args.jsxFragment, define: args.define, - tsconfig: getTsconfig(args), + tsconfig: getTsconfigPath(args), banner: args.banner, footer: args.footer, }); } -function getTsconfig (args: EsBuildPluginArgs): string | undefined { +function getTsconfigPath (args: EsBuildPluginArgs): string | undefined { if (args.tsconfig) { return args.tsconfig } - return args.ts ? 'tsconfig.json' : undefined; + return (args.ts || args.tsx) ? 'tsconfig.json' : undefined; } \ No newline at end of file From 6b01b33b816e6fd3a9147089f48ec7498d9b4ec3 Mon Sep 17 00:00:00 2001 From: anthony-y-zhu14 Date: Sat, 26 Jul 2025 00:15:34 -0400 Subject: [PATCH 3/3] chore: add changeset --- .changeset/empty-apricots-double.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/empty-apricots-double.md diff --git a/.changeset/empty-apricots-double.md b/.changeset/empty-apricots-double.md new file mode 100644 index 000000000..8321762b3 --- /dev/null +++ b/.changeset/empty-apricots-double.md @@ -0,0 +1,5 @@ +--- +'@web/dev-server-esbuild': patch +--- + +properly parse tsconfig files from the provided path using get-tsconfig, default tsconfig path to tsconfig.json if ts or tsx is true in config