From 604398025303222a89697847371f1eea79505173 Mon Sep 17 00:00:00 2001 From: underfin Date: Fri, 5 Jul 2024 14:19:44 +0800 Subject: [PATCH 01/81] feat(optimizer): using rolldown instead of esbuild --- packages/vite/src/node/optimizer/scan.ts | 1 - pnpm-lock.yaml | 154 +++++------------------ 2 files changed, 30 insertions(+), 125 deletions(-) diff --git a/packages/vite/src/node/optimizer/scan.ts b/packages/vite/src/node/optimizer/scan.ts index 789d6294d06921..af75b2da03792d 100644 --- a/packages/vite/src/node/optimizer/scan.ts +++ b/packages/vite/src/node/optimizer/scan.ts @@ -36,7 +36,6 @@ import type { PluginContainer } from '../server/pluginContainer' import { createPluginContainer } from '../server/pluginContainer' import { transformGlobImport } from '../plugins/importMetaGlob' import { cleanUrl } from '../../shared/utils' -import { loadTsconfigJsonForFile } from '../plugins/esbuild' type ResolveIdOptions = Parameters[2] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5f83e851fe8e00..bcb8916704da20 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -235,10 +235,6 @@ importers: ======= specifier: ^8.4.40 version: 8.4.40 ->>>>>>> fd64fc622 (chore: update lock) - rolldown: - specifier: latest - version: 0.12.2 rollup: specifier: ^4.20.0 version: 4.20.0 @@ -3038,66 +3034,6 @@ packages: '@polka/url@1.0.0-next.24': resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} - '@rolldown/binding-darwin-arm64@0.12.2': - resolution: {integrity: sha512-Y3Ajye63Z5KymGUwTLaK7Q6YMvycXqNiXtosecgVzjAwMITCmXdzgnWgzzx5UlWHMrDYL4m5zIeXGB5slLwoMA==} - cpu: [arm64] - os: [darwin] - - '@rolldown/binding-darwin-x64@0.12.2': - resolution: {integrity: sha512-ZcVuVFEFBXhp00TUNn+EDYs7SGGLQCznvCeuW1XkM8EC2/LfewU/o4WuJK7CBC4iCSktuFGpw7+zLe8D6iinzg==} - cpu: [x64] - os: [darwin] - - '@rolldown/binding-freebsd-x64@0.12.2': - resolution: {integrity: sha512-4fjuQHpm3q/Ly4fcqb8Qn49OQc2EQR2scUbQaOzXr7mIn9Zy8NfdRrsVG4/wpYvihIlTEtVx+ku0IZwcUzzZGg==} - cpu: [x64] - os: [freebsd] - - '@rolldown/binding-linux-arm-gnueabihf@0.12.2': - resolution: {integrity: sha512-MGEDaYLzTQ1kpvt13PzOwnd6O668S1mPM/vgi4O9vCfqJNTXZX8SeAg8Z2dQZbMSUyFDBVKGkz23GRTHqkGIsQ==} - cpu: [arm] - os: [linux] - - '@rolldown/binding-linux-arm64-gnu@0.12.2': - resolution: {integrity: sha512-8uiaMe39twyIAw0do1Gc3O2SpQmyL1A/BucFncEB8eU5jtb3BWIM/X+F+eKDU6c+XZ+S1T025dhR1cGg8y20Xw==} - cpu: [arm64] - os: [linux] - - '@rolldown/binding-linux-arm64-musl@0.12.2': - resolution: {integrity: sha512-GOFSKaMJueaSSODcqI+0Hu79buHYtGV7h2tydIDkSDD20mQuvwOF7jIVd27yNdlXWS9wLObwEu3BNgHmIj1M6A==} - cpu: [arm64] - os: [linux] - - '@rolldown/binding-linux-x64-gnu@0.12.2': - resolution: {integrity: sha512-+hlRURUSiVP0+PFtjoTxUsiy/2NQpbf3DyUyMyl8Nv5+1BxjB6452VY1iFI+RzG4iLNJslcVcI6d6lJQ5zZYfw==} - cpu: [x64] - os: [linux] - - '@rolldown/binding-linux-x64-musl@0.12.2': - resolution: {integrity: sha512-9WKIaQSZZ0i9F5msW4I5kEj6ov+TZLteuTqCzI7nYWDBDm7m/hYkOkdIBf41GC8iKFsgVIQO0kRVAT966U8RxQ==} - cpu: [x64] - os: [linux] - - '@rolldown/binding-wasm32-wasi@0.12.2': - resolution: {integrity: sha512-KY7bNrR3Jk6O0ne8LAaAnq9yI6xuKwhr/L2d1lBwrraCCyLHk0UEv4g6PfJkyUx6GfN0gVYuSxFgo9OggycldA==} - engines: {node: '>=14.21.3'} - cpu: [wasm32] - - '@rolldown/binding-win32-arm64-msvc@0.12.2': - resolution: {integrity: sha512-XYBXifPk5iNcPUTyV/yB4tlj5nI+fYoe/8CLHjyUG8GS0l8rCD+jKaAv3Jvz2T2erlkjEPqJXmzhUfBscOUo6g==} - cpu: [arm64] - os: [win32] - - '@rolldown/binding-win32-ia32-msvc@0.12.2': - resolution: {integrity: sha512-SV9LqvEc0d4gCLbkezH+UJ2uj2pTw3mwSKhFJEm6ir1lb05W6y9++m67NRs17fhudkFAz8iKlyPxKtZBKzAKOw==} - cpu: [ia32] - os: [win32] - - '@rolldown/binding-win32-x64-msvc@0.12.2': - resolution: {integrity: sha512-XnRqHx182tyk1M12OMXqLajIj9DZrOUEKSPYrQUSaMCmHHAhULYP6ki240CV16PBWZW4Q1pwQ7YVKYFevRtvKg==} - cpu: [x64] - os: [win32] - '@rollup/plugin-alias@5.1.0': resolution: {integrity: sha512-lpA3RZ9PdIG7qqhEfv79tBffNaoDuukFDrmhLqg9ifv99u/ehn+lOg30x2zmhf8AQqQUZaMk/B9fZraQ6/acDQ==} engines: {node: '>=14.0.0'} @@ -4216,9 +4152,18 @@ packages: citty@0.1.4: resolution: {integrity: sha512-Q3bK1huLxzQrvj7hImJ7Z1vKYJRPQCDnd0EjXfHMidcjecGOMuLrmuQmtWmFkuKLcMThlGh1yCKG8IEc6VeNXQ==} +<<<<<<< HEAD cli-cursor@5.0.0: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} +======= + citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + + cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} +>>>>>>> e7317462e (feat(optimizer): using rolldown instead of esbuild) cli-truncate@4.0.0: resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} @@ -5412,6 +5357,10 @@ packages: resolution: {integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==} engines: {node: '>= 12.13.0'} + local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -6269,10 +6218,6 @@ packages: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true - rolldown@0.12.2: - resolution: {integrity: sha512-YJYKiYt2O9XytiQ3Na4Kk29avfIXhvK7udB3wAaVaF4kiSsFKE1167tElO/0eD6tjfJXCvwNxwsyYkBJRtsLmQ==} - hasBin: true - rollup-plugin-dts@6.1.1: resolution: {integrity: sha512-aSHRcJ6KG2IHIioYlvAOcEq6U99sVtqDDKVhnwt70rW6tsz3tv5OSjEiWcgzfsHdLyGXZ/3b/7b/+Za3Y6r1XA==} engines: {node: '>=16'} @@ -7188,6 +7133,9 @@ packages: zod@3.23.8: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -8635,44 +8583,6 @@ snapshots: '@polka/url@1.0.0-next.24': {} - '@rolldown/binding-darwin-arm64@0.12.2': - optional: true - - '@rolldown/binding-darwin-x64@0.12.2': - optional: true - - '@rolldown/binding-freebsd-x64@0.12.2': - optional: true - - '@rolldown/binding-linux-arm-gnueabihf@0.12.2': - optional: true - - '@rolldown/binding-linux-arm64-gnu@0.12.2': - optional: true - - '@rolldown/binding-linux-arm64-musl@0.12.2': - optional: true - - '@rolldown/binding-linux-x64-gnu@0.12.2': - optional: true - - '@rolldown/binding-linux-x64-musl@0.12.2': - optional: true - - '@rolldown/binding-wasm32-wasi@0.12.2': - dependencies: - '@napi-rs/wasm-runtime': 0.2.4 - optional: true - - '@rolldown/binding-win32-arm64-msvc@0.12.2': - optional: true - - '@rolldown/binding-win32-ia32-msvc@0.12.2': - optional: true - - '@rolldown/binding-win32-x64-msvc@0.12.2': - optional: true - '@rollup/plugin-alias@5.1.0(rollup@3.29.4)': dependencies: slash: 4.0.0 @@ -9889,7 +9799,15 @@ snapshots: dependencies: consola: 3.2.3 +<<<<<<< HEAD cli-cursor@5.0.0: +======= + citty@0.1.6: + dependencies: + consola: 3.2.3 + + cli-cursor@4.0.0: +>>>>>>> e7317462e (feat(optimizer): using rolldown instead of esbuild) dependencies: restore-cursor: 5.1.0 @@ -11212,6 +11130,11 @@ snapshots: loader-utils@3.2.1: {} + local-pkg@0.5.0: + dependencies: + mlly: 1.7.1 + pkg-types: 1.0.3 + locate-path@6.0.0: dependencies: p-locate: 5.0.0 @@ -12203,23 +12126,6 @@ snapshots: dependencies: glob: 10.4.5 - rolldown@0.12.2: - dependencies: - zod: 3.23.8 - optionalDependencies: - '@rolldown/binding-darwin-arm64': 0.12.2 - '@rolldown/binding-darwin-x64': 0.12.2 - '@rolldown/binding-freebsd-x64': 0.12.2 - '@rolldown/binding-linux-arm-gnueabihf': 0.12.2 - '@rolldown/binding-linux-arm64-gnu': 0.12.2 - '@rolldown/binding-linux-arm64-musl': 0.12.2 - '@rolldown/binding-linux-x64-gnu': 0.12.2 - '@rolldown/binding-linux-x64-musl': 0.12.2 - '@rolldown/binding-wasm32-wasi': 0.12.2 - '@rolldown/binding-win32-arm64-msvc': 0.12.2 - '@rolldown/binding-win32-ia32-msvc': 0.12.2 - '@rolldown/binding-win32-x64-msvc': 0.12.2 - rollup-plugin-dts@6.1.1(rollup@3.29.4)(typescript@5.5.3): dependencies: magic-string: 0.30.11 @@ -13214,6 +13120,6 @@ snapshots: zimmerframe@1.0.0: {} - zod@3.23.8: {} + zod@3.22.4: {} zwitch@2.0.4: {} From 676ce1f657d469f64b51f3b4bb77cdaa98c59dca Mon Sep 17 00:00:00 2001 From: underfin Date: Fri, 26 Jul 2024 19:25:43 +0800 Subject: [PATCH 02/81] chore: using latest rolldown --- pnpm-lock.yaml | 172 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 172 insertions(+) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bcb8916704da20..0d8d68e06f1e0c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -232,9 +232,21 @@ importers: ======= specifier: ^8.4.39 version: 8.4.39 +<<<<<<< HEAD ======= specifier: ^8.4.40 version: 8.4.40 +======= + rolldown: +<<<<<<< HEAD + specifier: ^0.10.5 + version: 0.10.5 +>>>>>>> e7317462e (feat(optimizer): using rolldown instead of esbuild) +======= + specifier: latest + version: 0.12.2 +>>>>>>> 373dcbfe4 (chore: using latest rolldown) +>>>>>>> 054006584 (chore: using latest rolldown) rollup: specifier: ^4.20.0 version: 4.20.0 @@ -3034,6 +3046,78 @@ packages: '@polka/url@1.0.0-next.24': resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} +<<<<<<< HEAD +======= + '@rolldown/binding-darwin-arm64@0.12.2': + resolution: {integrity: sha512-Y3Ajye63Z5KymGUwTLaK7Q6YMvycXqNiXtosecgVzjAwMITCmXdzgnWgzzx5UlWHMrDYL4m5zIeXGB5slLwoMA==} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@0.12.2': + resolution: {integrity: sha512-ZcVuVFEFBXhp00TUNn+EDYs7SGGLQCznvCeuW1XkM8EC2/LfewU/o4WuJK7CBC4iCSktuFGpw7+zLe8D6iinzg==} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@0.12.2': + resolution: {integrity: sha512-4fjuQHpm3q/Ly4fcqb8Qn49OQc2EQR2scUbQaOzXr7mIn9Zy8NfdRrsVG4/wpYvihIlTEtVx+ku0IZwcUzzZGg==} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@0.12.2': + resolution: {integrity: sha512-MGEDaYLzTQ1kpvt13PzOwnd6O668S1mPM/vgi4O9vCfqJNTXZX8SeAg8Z2dQZbMSUyFDBVKGkz23GRTHqkGIsQ==} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@0.12.2': + resolution: {integrity: sha512-8uiaMe39twyIAw0do1Gc3O2SpQmyL1A/BucFncEB8eU5jtb3BWIM/X+F+eKDU6c+XZ+S1T025dhR1cGg8y20Xw==} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-arm64-musl@0.12.2': + resolution: {integrity: sha512-GOFSKaMJueaSSODcqI+0Hu79buHYtGV7h2tydIDkSDD20mQuvwOF7jIVd27yNdlXWS9wLObwEu3BNgHmIj1M6A==} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-x64-gnu@0.12.2': + resolution: {integrity: sha512-+hlRURUSiVP0+PFtjoTxUsiy/2NQpbf3DyUyMyl8Nv5+1BxjB6452VY1iFI+RzG4iLNJslcVcI6d6lJQ5zZYfw==} + cpu: [x64] + os: [linux] + + '@rolldown/binding-linux-x64-musl@0.12.2': + resolution: {integrity: sha512-9WKIaQSZZ0i9F5msW4I5kEj6ov+TZLteuTqCzI7nYWDBDm7m/hYkOkdIBf41GC8iKFsgVIQO0kRVAT966U8RxQ==} + cpu: [x64] + os: [linux] + + '@rolldown/binding-wasm32-wasi@0.12.2': + resolution: {integrity: sha512-KY7bNrR3Jk6O0ne8LAaAnq9yI6xuKwhr/L2d1lBwrraCCyLHk0UEv4g6PfJkyUx6GfN0gVYuSxFgo9OggycldA==} + engines: {node: '>=14.21.3'} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@0.12.2': + resolution: {integrity: sha512-XYBXifPk5iNcPUTyV/yB4tlj5nI+fYoe/8CLHjyUG8GS0l8rCD+jKaAv3Jvz2T2erlkjEPqJXmzhUfBscOUo6g==} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-ia32-msvc@0.12.2': + resolution: {integrity: sha512-SV9LqvEc0d4gCLbkezH+UJ2uj2pTw3mwSKhFJEm6ir1lb05W6y9++m67NRs17fhudkFAz8iKlyPxKtZBKzAKOw==} + cpu: [ia32] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@0.12.2': + resolution: {integrity: sha512-XnRqHx182tyk1M12OMXqLajIj9DZrOUEKSPYrQUSaMCmHHAhULYP6ki240CV16PBWZW4Q1pwQ7YVKYFevRtvKg==} + cpu: [x64] + os: [win32] + + '@rollup/plugin-alias@5.0.0': + resolution: {integrity: sha512-l9hY5chSCjuFRPsnRm16twWBiSApl2uYFLsepQYwtBuAxNMQ/1dJqADld40P0Jkqm65GRTLy/AC6hnpVebtLsA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + +>>>>>>> 054006584 (chore: using latest rolldown) '@rollup/plugin-alias@5.1.0': resolution: {integrity: sha512-lpA3RZ9PdIG7qqhEfv79tBffNaoDuukFDrmhLqg9ifv99u/ehn+lOg30x2zmhf8AQqQUZaMk/B9fZraQ6/acDQ==} engines: {node: '>=14.0.0'} @@ -4152,6 +4236,7 @@ packages: citty@0.1.4: resolution: {integrity: sha512-Q3bK1huLxzQrvj7hImJ7Z1vKYJRPQCDnd0EjXfHMidcjecGOMuLrmuQmtWmFkuKLcMThlGh1yCKG8IEc6VeNXQ==} +<<<<<<< HEAD <<<<<<< HEAD cli-cursor@5.0.0: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} @@ -4160,6 +4245,8 @@ packages: citty@0.1.6: resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} +======= +>>>>>>> 373dcbfe4 (chore: using latest rolldown) cli-cursor@4.0.0: resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -6214,8 +6301,24 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true +<<<<<<< HEAD rimraf@5.0.10: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} +======= +<<<<<<< HEAD + rimraf@5.0.9: + resolution: {integrity: sha512-3i7b8OcswU6CpU8Ej89quJD4O98id7TtVM5U4Mybh84zQXdrFmDLouWBEEaD/QfO3gDDfH+AGFCGsR7kngzQnA==} + engines: {node: 14 >=14.20 || 16 >=16.20 || >=18} +======= + rimraf@5.0.7: + resolution: {integrity: sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==} + engines: {node: '>=14.18'} + hasBin: true + + rolldown@0.12.2: + resolution: {integrity: sha512-YJYKiYt2O9XytiQ3Na4Kk29avfIXhvK7udB3wAaVaF4kiSsFKE1167tElO/0eD6tjfJXCvwNxwsyYkBJRtsLmQ==} +>>>>>>> f35336e4e (chore: using latest rolldown) +>>>>>>> 373dcbfe4 (chore: using latest rolldown) hasBin: true rollup-plugin-dts@6.1.1: @@ -8583,7 +8686,52 @@ snapshots: '@polka/url@1.0.0-next.24': {} +<<<<<<< HEAD '@rollup/plugin-alias@5.1.0(rollup@3.29.4)': +======= +<<<<<<< HEAD +======= + '@rolldown/binding-darwin-arm64@0.12.2': + optional: true + + '@rolldown/binding-darwin-x64@0.12.2': + optional: true + + '@rolldown/binding-freebsd-x64@0.12.2': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@0.12.2': + optional: true + + '@rolldown/binding-linux-arm64-gnu@0.12.2': + optional: true + + '@rolldown/binding-linux-arm64-musl@0.12.2': + optional: true + + '@rolldown/binding-linux-x64-gnu@0.12.2': + optional: true + + '@rolldown/binding-linux-x64-musl@0.12.2': + optional: true + + '@rolldown/binding-wasm32-wasi@0.12.2': + dependencies: + '@napi-rs/wasm-runtime': 0.2.4 + optional: true + + '@rolldown/binding-win32-arm64-msvc@0.12.2': + optional: true + + '@rolldown/binding-win32-ia32-msvc@0.12.2': + optional: true + + '@rolldown/binding-win32-x64-msvc@0.12.2': + optional: true + +>>>>>>> f35336e4e (chore: using latest rolldown) + '@rollup/plugin-alias@5.0.0(rollup@3.29.4)': +>>>>>>> 054006584 (chore: using latest rolldown) dependencies: slash: 4.0.0 optionalDependencies: @@ -9799,6 +9947,7 @@ snapshots: dependencies: consola: 3.2.3 +<<<<<<< HEAD <<<<<<< HEAD cli-cursor@5.0.0: ======= @@ -9806,6 +9955,8 @@ snapshots: dependencies: consola: 3.2.3 +======= +>>>>>>> 373dcbfe4 (chore: using latest rolldown) cli-cursor@4.0.0: >>>>>>> e7317462e (feat(optimizer): using rolldown instead of esbuild) dependencies: @@ -12124,7 +12275,28 @@ snapshots: rimraf@5.0.10: dependencies: +<<<<<<< HEAD glob: 10.4.5 +======= + glob: 10.3.10 + + rolldown@0.12.2: + dependencies: + zod: 3.23.8 + optionalDependencies: + '@rolldown/binding-darwin-arm64': 0.12.2 + '@rolldown/binding-darwin-x64': 0.12.2 + '@rolldown/binding-freebsd-x64': 0.12.2 + '@rolldown/binding-linux-arm-gnueabihf': 0.12.2 + '@rolldown/binding-linux-arm64-gnu': 0.12.2 + '@rolldown/binding-linux-arm64-musl': 0.12.2 + '@rolldown/binding-linux-x64-gnu': 0.12.2 + '@rolldown/binding-linux-x64-musl': 0.12.2 + '@rolldown/binding-wasm32-wasi': 0.12.2 + '@rolldown/binding-win32-arm64-msvc': 0.12.2 + '@rolldown/binding-win32-ia32-msvc': 0.12.2 + '@rolldown/binding-win32-x64-msvc': 0.12.2 +>>>>>>> f35336e4e (chore: using latest rolldown) rollup-plugin-dts@6.1.1(rollup@3.29.4)(typescript@5.5.3): dependencies: From a9cb34cc647974318c59bdc14cc72a7a9a8fa047 Mon Sep 17 00:00:00 2001 From: underfin Date: Mon, 5 Aug 2024 18:40:16 +0800 Subject: [PATCH 03/81] chore: update lock --- pnpm-lock.yaml | 129 ++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 101 insertions(+), 28 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0d8d68e06f1e0c..e6bca3a63ee048 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -226,6 +226,7 @@ importers: version: 0.21.5 postcss: <<<<<<< HEAD +<<<<<<< HEAD <<<<<<< HEAD specifier: ^8.4.41 version: 8.4.41 @@ -237,16 +238,18 @@ importers: specifier: ^8.4.40 version: 8.4.40 ======= - rolldown: -<<<<<<< HEAD - specifier: ^0.10.5 - version: 0.10.5 ->>>>>>> e7317462e (feat(optimizer): using rolldown instead of esbuild) ======= + specifier: ^8.4.40 + version: 8.4.40 +>>>>>>> fd64fc622 (chore: update lock) + rolldown: specifier: latest version: 0.12.2 +<<<<<<< HEAD >>>>>>> 373dcbfe4 (chore: using latest rolldown) >>>>>>> 054006584 (chore: using latest rolldown) +======= +>>>>>>> fd64fc622 (chore: update lock) rollup: specifier: ^4.20.0 version: 4.20.0 @@ -3807,6 +3810,7 @@ packages: '@vue/compiler-core@3.2.0': resolution: {integrity: sha512-+kfA4pisto26tcEh9Naf/qrizplYWnkBLHu3fX5Yu0c47RVBteVG3dHENFczl3Egwra+5NP5f3YuOgxK1ZMbNQ==} +<<<<<<< HEAD <<<<<<< HEAD '@vue/compiler-core@3.4.37': resolution: {integrity: sha512-ZDDT/KiLKuCRXyzWecNzC5vTcubGz4LECAtfGPENpo0nrmqJHwuWtRLxk/Sb9RAKtR9iFflFycbkjkY+W/PZUQ==} @@ -3814,6 +3818,8 @@ packages: '@vue/compiler-core@3.4.38': resolution: {integrity: sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==} ======= +======= +>>>>>>> fd64fc622 (chore: update lock) '@vue/compiler-core@3.4.33': resolution: {integrity: sha512-MoIREbkdPQlnGfSKDMgzTqzqx5nmEjIc0ydLVYlTACGBsfvOJ4tHSbZXKVF536n6fB+0eZaGEOqsGThPpdvF5A==} @@ -3824,10 +3830,13 @@ packages: '@vue/compiler-dom@3.2.0': resolution: {integrity: sha512-CqfATmX04+58LNBTTUPRBLyYGLP0bxtL+8b7B8pEvXja7fpmxiYcKBQsdaXfyqoRJsaTzA7eVXQt/t0dYhu/SQ==} +<<<<<<< HEAD <<<<<<< HEAD '@vue/compiler-dom@3.4.37': resolution: {integrity: sha512-rIiSmL3YrntvgYV84rekAtU/xfogMUJIclUMeIKEtVBFngOL3IeZHhsH3UaFEgB5iFGpj6IW+8YuM/2Up+vVag==} ======= +======= +>>>>>>> fd64fc622 (chore: update lock) '@vue/compiler-dom@3.4.33': resolution: {integrity: sha512-GzB8fxEHKw0gGet5BKlpfXEqoBnzSVWwMnT+dc25wE7pFEfrU/QsvjZMP9rD4iVXHBBoemTct8mN0GJEI6ZX5A==} @@ -3847,6 +3856,9 @@ packages: '@vue/devtools-api@6.6.1': resolution: {integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==} + '@vue/devtools-api@6.6.1': + resolution: {integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==} + '@vue/devtools-api@6.6.3': resolution: {integrity: sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw==} @@ -3893,10 +3905,13 @@ packages: '@vue/shared@3.2.0': resolution: {integrity: sha512-MgdilC3YHYSCFuNlxZBgugh8B9/h/h+nQ6lkeaxqFWW+FnV/JzCwW4Bh5bYIYvBleG8QZjFwxdmdqSAWLXzgEA==} +<<<<<<< HEAD <<<<<<< HEAD '@vue/shared@3.4.37': resolution: {integrity: sha512-nIh8P2fc3DflG8+5Uw8PT/1i17ccFn0xxN/5oE9RfV5SVnd7G0XEFRwakrnNFE/jlS95fpGXDVG5zDETS26nmg==} ======= +======= +>>>>>>> fd64fc622 (chore: update lock) '@vue/shared@3.4.31': resolution: {integrity: sha512-Yp3wtJk//8cO4NItOPpi3QkLExAr/aLBGZMmTtW9WpdwBCJpRM6zj9WgWktXAl8IDIozwNMByT45JP3tO3ACWA==} @@ -4236,21 +4251,9 @@ packages: citty@0.1.4: resolution: {integrity: sha512-Q3bK1huLxzQrvj7hImJ7Z1vKYJRPQCDnd0EjXfHMidcjecGOMuLrmuQmtWmFkuKLcMThlGh1yCKG8IEc6VeNXQ==} -<<<<<<< HEAD -<<<<<<< HEAD cli-cursor@5.0.0: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} -======= - citty@0.1.6: - resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} - -======= ->>>>>>> 373dcbfe4 (chore: using latest rolldown) - cli-cursor@4.0.0: - resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} ->>>>>>> e7317462e (feat(optimizer): using rolldown instead of esbuild) cli-truncate@4.0.0: resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} @@ -6301,6 +6304,7 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true +<<<<<<< HEAD <<<<<<< HEAD rimraf@5.0.10: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} @@ -6313,12 +6317,19 @@ packages: rimraf@5.0.7: resolution: {integrity: sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==} engines: {node: '>=14.18'} +======= + rimraf@5.0.10: + resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} +>>>>>>> fd64fc622 (chore: update lock) hasBin: true rolldown@0.12.2: resolution: {integrity: sha512-YJYKiYt2O9XytiQ3Na4Kk29avfIXhvK7udB3wAaVaF4kiSsFKE1167tElO/0eD6tjfJXCvwNxwsyYkBJRtsLmQ==} +<<<<<<< HEAD >>>>>>> f35336e4e (chore: using latest rolldown) >>>>>>> 373dcbfe4 (chore: using latest rolldown) +======= +>>>>>>> fd64fc622 (chore: update lock) hasBin: true rollup-plugin-dts@6.1.1: @@ -6563,6 +6574,9 @@ packages: side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} @@ -7233,9 +7247,12 @@ packages: zimmerframe@1.0.0: resolution: {integrity: sha512-H6qQ6LtjP+kDQwDgol18fPi4OCo7F+73ZBYt2U9c1D3V74bIMKxXvyrN0x+1I7/RYh5YsausflQxQR/qwDLHPQ==} +<<<<<<< HEAD zod@3.23.8: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} +======= +>>>>>>> fd64fc622 (chore: update lock) zod@3.23.8: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} @@ -9456,10 +9473,22 @@ snapshots: estree-walker: 2.0.2 source-map: 0.6.1 +<<<<<<< HEAD <<<<<<< HEAD '@vue/compiler-core@3.4.37': ======= '@vue/compiler-core@3.4.33': +======= + '@vue/compiler-core@3.4.33': + dependencies: + '@babel/parser': 7.25.3 + '@vue/shared': 3.4.33 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.0 + + '@vue/compiler-core@3.4.35': +>>>>>>> fd64fc622 (chore: update lock) dependencies: '@babel/parser': 7.25.3 '@vue/shared': 3.4.33 @@ -9489,14 +9518,23 @@ snapshots: '@vue/compiler-core': 3.2.0 '@vue/shared': 3.2.0 +<<<<<<< HEAD <<<<<<< HEAD '@vue/compiler-dom@3.4.37': +======= + '@vue/compiler-dom@3.4.33': ======= '@vue/compiler-dom@3.4.33': dependencies: '@vue/compiler-core': 3.4.33 '@vue/shared': 3.4.33 + '@vue/compiler-dom@3.4.35': +>>>>>>> fd64fc622 (chore: update lock) + dependencies: + '@vue/compiler-core': 3.4.33 + '@vue/shared': 3.4.33 + '@vue/compiler-dom@3.4.35': >>>>>>> fd64fc622 (chore: update lock) dependencies: @@ -9527,6 +9565,8 @@ snapshots: '@vue/devtools-api@6.6.1': {} + '@vue/devtools-api@6.6.1': {} + '@vue/devtools-api@6.6.3': {} '@vue/devtools-api@7.3.8': @@ -9550,10 +9590,13 @@ snapshots: '@vue/language-core@2.0.24(typescript@5.5.3)': dependencies: '@volar/language-core': 2.4.0-alpha.12 +<<<<<<< HEAD <<<<<<< HEAD '@vue/compiler-dom': 3.4.37 '@vue/shared': 3.4.38 ======= +======= +>>>>>>> fd64fc622 (chore: update lock) '@vue/compiler-dom': 3.4.33 '@vue/shared': 3.4.35 >>>>>>> fd64fc622 (chore: update lock) @@ -9604,13 +9647,21 @@ snapshots: '@vue/shared@3.2.0': {} +<<<<<<< HEAD <<<<<<< HEAD '@vue/shared@3.4.37': {} +======= + '@vue/shared@3.4.31': {} ======= '@vue/shared@3.4.31': {} '@vue/shared@3.4.33': {} + '@vue/shared@3.4.35': {} +>>>>>>> fd64fc622 (chore: update lock) + + '@vue/shared@3.4.33': {} + '@vue/shared@3.4.35': {} >>>>>>> fd64fc622 (chore: update lock) @@ -9947,18 +9998,7 @@ snapshots: dependencies: consola: 3.2.3 -<<<<<<< HEAD -<<<<<<< HEAD cli-cursor@5.0.0: -======= - citty@0.1.6: - dependencies: - consola: 3.2.3 - -======= ->>>>>>> 373dcbfe4 (chore: using latest rolldown) - cli-cursor@4.0.0: ->>>>>>> e7317462e (feat(optimizer): using rolldown instead of esbuild) dependencies: restore-cursor: 5.1.0 @@ -10424,9 +10464,14 @@ snapshots: eslint-compat-utils@0.5.1(eslint@9.9.0(jiti@1.21.0)): dependencies: +<<<<<<< HEAD <<<<<<< HEAD eslint: 9.9.0(jiti@1.21.0) semver: 7.6.3 +======= + eslint: 9.8.0 + semver: 7.6.2 +>>>>>>> fd64fc622 (chore: update lock) ======= eslint: 9.8.0 semver: 7.6.2 @@ -11987,17 +12032,29 @@ snapshots: icss-utils: 5.1.0(postcss@8.4.40) postcss: 8.4.40 postcss-selector-parser: 6.0.11 +<<<<<<< HEAD +>>>>>>> fd64fc622 (chore: update lock) +======= >>>>>>> fd64fc622 (chore: update lock) postcss-value-parser: 4.2.0 postcss-modules-scope@3.0.0(postcss@8.4.41): dependencies: +<<<<<<< HEAD <<<<<<< HEAD postcss: 8.4.41 postcss-selector-parser: 6.1.1 +======= ======= postcss: 8.4.40 postcss-selector-parser: 6.0.11 + + postcss-modules-values@4.0.0(postcss@8.4.40): + dependencies: + icss-utils: 5.1.0(postcss@8.4.40) +>>>>>>> fd64fc622 (chore: update lock) + postcss: 8.4.40 + postcss-selector-parser: 6.0.11 >>>>>>> fd64fc622 (chore: update lock) postcss-modules-values@4.0.0(postcss@8.4.41): @@ -12562,6 +12619,12 @@ snapshots: get-intrinsic: 1.2.1 object-inspect: 1.12.3 + side-channel@1.0.4: + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + object-inspect: 1.12.3 + side-channel@1.0.6: dependencies: call-bind: 1.0.7 @@ -13106,6 +13169,9 @@ snapshots: mark.js: 8.11.1 minisearch: 7.0.0 shiki: 1.10.3 +<<<<<<< HEAD +>>>>>>> fd64fc622 (chore: update lock) +======= >>>>>>> fd64fc622 (chore: update lock) vite: link:packages/vite vue: 3.4.38(typescript@5.5.3) @@ -13195,10 +13261,13 @@ snapshots: vuex@4.1.0(vue@3.4.38(typescript@5.5.3)): dependencies: +<<<<<<< HEAD <<<<<<< HEAD '@vue/devtools-api': 6.6.3 vue: 3.4.38(typescript@5.5.3) ======= +======= +>>>>>>> fd64fc622 (chore: update lock) '@vue/devtools-api': 6.6.1 vue: 3.4.35(typescript@5.5.3) >>>>>>> fd64fc622 (chore: update lock) @@ -13292,6 +13361,10 @@ snapshots: zimmerframe@1.0.0: {} +<<<<<<< HEAD zod@3.22.4: {} +======= + zod@3.23.8: {} +>>>>>>> fd64fc622 (chore: update lock) zwitch@2.0.4: {} From 0253535fd4b0a7054fec1c6bbb2395dc7968ad1a Mon Sep 17 00:00:00 2001 From: underfin Date: Fri, 5 Jul 2024 14:19:44 +0800 Subject: [PATCH 04/81] feat(optimizer): using rolldown instead of esbuild --- packages/vite/src/node/optimizer/index.ts | 37 +- packages/vite/src/node/optimizer/scan.ts | 497 ++++++++++++++++++++-- pnpm-lock.yaml | 122 ++++++ 3 files changed, 628 insertions(+), 28 deletions(-) diff --git a/packages/vite/src/node/optimizer/index.ts b/packages/vite/src/node/optimizer/index.ts index da7c09dfc45e01..098b6755330288 100644 --- a/packages/vite/src/node/optimizer/index.ts +++ b/packages/vite/src/node/optimizer/index.ts @@ -715,19 +715,24 @@ async function prepareRolldownOptimizerRun( const optimizeDeps = getDepOptimizationConfig(config, ssr) + const { plugins: pluginsFromConfig = [], ...rollupOptions } = + optimizeDeps?.rollupOptions ?? {} const { plugins: pluginsFromConfig = [], ...rollupOptions } = optimizeDeps?.rollupOptions ?? {} + let jsxLoader = false let jsxLoader = false await Promise.all( Object.keys(depsInfo).map(async (id) => { const src = depsInfo[id].src! const exportsData = await (depsInfo[id].exportsData ?? extractExportsData(src, config, ssr)) + if (exportsData.jsxLoader) { if (exportsData.jsxLoader) { // Ensure that optimization won't fail by defaulting '.js' to the JSX parser. // This is useful for packages such as Gatsby. jsxLoader = true + jsxLoader = true } const flatId = flattenId(id) flatIdDeps[flatId] = src @@ -735,14 +740,20 @@ async function prepareRolldownOptimizerRun( }), ) + if (optimizerContext.cancelled) return { build: undefined, idToExports } if (optimizerContext.cancelled) return { build: undefined, idToExports } + // In lib mode, we need to keep process.env.NODE_ENV untouched // In lib mode, we need to keep process.env.NODE_ENV untouched const define = { 'process.env.NODE_ENV': isBuild && config.build.lib ? 'process.env.NODE_ENV' : JSON.stringify(process.env.NODE_ENV || config.mode), + 'process.env.NODE_ENV': + isBuild && config.build.lib + ? 'process.env.NODE_ENV' + : JSON.stringify(process.env.NODE_ENV || config.mode), } const platform = @@ -770,11 +781,35 @@ async function prepareRolldownOptimizerRun( } } + const plugins = await asyncFlatten( + Array.isArray(pluginsFromConfig) ? pluginsFromConfig : [pluginsFromConfig], + ) + if (isBuild) { + let rollupOptionsExternal = config?.build?.rollupOptions?.external + if (rollupOptionsExternal) { + if (typeof rollupOptionsExternal === 'string') { + rollupOptionsExternal = [rollupOptionsExternal] + } + // TODO: decide whether to support RegExp and function options + // They're not supported yet because `optimizeDeps.exclude` currently only accepts strings + if ( + !Array.isArray(rollupOptionsExternal) || + rollupOptionsExternal.some((ext) => typeof ext !== 'string') + ) { + throw new Error( + `[vite] 'build.rollupOptions.external' can only be an array of strings or a string when using esbuild optimization at build time.`, + ) + } + external.push(...(rollupOptionsExternal as string[])) + } + } + const plugins = await asyncFlatten( Array.isArray(pluginsFromConfig) ? pluginsFromConfig : [pluginsFromConfig], ) if (external.length) { plugins.push(rolldownCjsExternalPlugin(external, platform)) + plugins.push(rolldownCjsExternalPlugin(external, platform)) } plugins.push(rolldownDepPlugin(flatIdDeps, external, config, ssr)) plugins.push({ @@ -804,7 +839,7 @@ async function prepareRolldownOptimizerRun( async function build() { const bundle = await rolldown.rolldown({ input: Object.keys(flatIdDeps), - // external, + external, logLevel: 'warn', plugins, resolve: { diff --git a/packages/vite/src/node/optimizer/scan.ts b/packages/vite/src/node/optimizer/scan.ts index af75b2da03792d..cb01e37b6fc736 100644 --- a/packages/vite/src/node/optimizer/scan.ts +++ b/packages/vite/src/node/optimizer/scan.ts @@ -7,6 +7,10 @@ import type { Plugin } from 'rolldown' import { scan } from 'rolldown/experimental' import type { Loader } from 'esbuild' import { transform } from 'esbuild' +import type { Plugin } from 'rolldown' +import * as rolldown from 'rolldown' +import type { Loader } from 'esbuild' +import { transform } from 'esbuild' import colors from 'picocolors' import type { ResolvedConfig } from '..' import { @@ -18,6 +22,7 @@ import { import { arraify, asyncFlatten, + asyncFlatten, createDebugger, dataUrlRE, externalRE, @@ -27,7 +32,7 @@ import { moduleListContains, multilineCommentsRE, normalizePath, - // parseRequest, + parseRequest, singlelineCommentsRE, virtualModulePrefix, virtualModuleRE, @@ -70,6 +75,7 @@ export function scanImports(config: ResolvedConfig): { const scanContext = { cancelled: false } + const context = computeEntries(config).then((computedEntries) => { const context = computeEntries(config).then((computedEntries) => { entries = computedEntries @@ -93,14 +99,17 @@ export function scanImports(config: ResolvedConfig): { .join('')}`, ) return prepareRolldownScanner(config, entries, deps, missing, scanContext) + return prepareRolldownScanner(config, entries, deps, missing, scanContext) }) + const result = context const result = context .then((context) => { if (!context || scanContext?.cancelled) { return { deps: {}, missing: {} } } return context + .build() .build() .then(() => { return { @@ -116,12 +125,24 @@ export function scanImports(config: ResolvedConfig): { // // return an empty result instead // return { deps: {}, missing: {} } // } + // if (e.errors && e.message.includes('The build was canceled')) { + // // esbuild logs an error when cancelling, but this is expected so + // // return an empty result instead + // return { deps: {}, missing: {} } + // } const prependMessage = colors.red(`\ Failed to scan for dependencies from entries: ${entries.join('\n')} `) + // if (e.errors) { + // const msgs = await formatMessages(e.errors, { + // kind: 'error', + // color: true, + // }) + // e.message = prependMessage + msgs.join('\n') + // } else { // if (e.errors) { // const msgs = await formatMessages(e.errors, { // kind: 'error', @@ -131,6 +152,7 @@ export function scanImports(config: ResolvedConfig): { // } else { e.message = prependMessage + e.message // } + // } throw e }) .finally(() => { @@ -149,6 +171,7 @@ export function scanImports(config: ResolvedConfig): { cancel: async () => { scanContext.cancelled = true // return esbuildContext.then((context) => context?.cancel()) + // return esbuildContext.then((context) => context?.cancel()) }, result, } @@ -188,6 +211,53 @@ async function computeEntries(config: ResolvedConfig) { return entries } +// async function prepareEsbuildScanner( +// config: ResolvedConfig, +// entries: string[], +// deps: Record, +// missing: Record, +// scanContext?: { cancelled: boolean }, +// ): Promise { +// const container = await createPluginContainer(config) + +// if (scanContext?.cancelled) return + +// const plugin = esbuildScanPlugin(config, container, deps, missing, entries) + +// const { plugins = [], ...esbuildOptions } = +// config.optimizeDeps?.esbuildOptions ?? {} + +// // The plugin pipeline automatically loads the closest tsconfig.json. +// // But esbuild doesn't support reading tsconfig.json if the plugin has resolved the path (https://github.com/evanw/esbuild/issues/2265). +// // Due to syntax incompatibilities between the experimental decorators in TypeScript and TC39 decorators, +// // we cannot simply set `"experimentalDecorators": true` or `false`. (https://github.com/vitejs/vite/pull/15206#discussion_r1417414715) +// // Therefore, we use the closest tsconfig.json from the root to make it work in most cases. +// let tsconfigRaw = esbuildOptions.tsconfigRaw +// if (!tsconfigRaw && !esbuildOptions.tsconfig) { +// const tsconfigResult = await loadTsconfigJsonForFile( +// path.join(config.root, '_dummy.js'), +// ) +// if (tsconfigResult.compilerOptions?.experimentalDecorators) { +// tsconfigRaw = { compilerOptions: { experimentalDecorators: true } } +// } +// } + +// return await esbuild.context({ +// absWorkingDir: process.cwd(), +// write: false, +// stdin: { +// contents: entries.map((e) => `import ${JSON.stringify(e)}`).join('\n'), +// loader: 'js', +// }, +// bundle: true, +// format: 'esm', +// logLevel: 'silent', +// plugins: [...plugins, plugin], +// ...esbuildOptions, +// tsconfigRaw, +// }) +// } + async function prepareRolldownScanner( config: ResolvedConfig, entries: string[], @@ -270,6 +340,392 @@ const typeRE = /\btype\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s'">]+))/i const langRE = /\blang\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s'">]+))/i const contextRE = /\bcontext\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s'">]+))/i +// function esbuildScanPlugin( +// config: ResolvedConfig, +// container: PluginContainer, +// depImports: Record, +// missing: Record, +// entries: string[], +// ): Plugin { +// const seen = new Map() + +// const resolve = async ( +// id: string, +// importer?: string, +// options?: ResolveIdOptions, +// ) => { +// const key = id + (importer && path.dirname(importer)) +// if (seen.has(key)) { +// return seen.get(key) +// } +// const resolved = await container.resolveId( +// id, +// importer && normalizePath(importer), +// { +// ...options, +// scan: true, +// }, +// ) +// const res = resolved?.id +// seen.set(key, res) +// return res +// } + +// const include = config.optimizeDeps?.include +// const exclude = [ +// ...(config.optimizeDeps?.exclude || []), +// '@vite/client', +// '@vite/env', +// ] + +// const isUnlessEntry = (path: string) => !entries.includes(path) + +// const externalUnlessEntry = ({ path }: { path: string }) => ({ +// path, +// external: isUnlessEntry(path), +// }) + +// const doTransformGlobImport = async ( +// contents: string, +// id: string, +// loader: Loader, +// ) => { +// let transpiledContents +// // transpile because `transformGlobImport` only expects js +// if (loader !== 'js') { +// transpiledContents = (await transform(contents, { loader })).code +// } else { +// transpiledContents = contents +// } + +// const result = await transformGlobImport( +// transpiledContents, +// id, +// config.root, +// resolve, +// ) + +// return result?.s.toString() || transpiledContents +// } + +// return { +// name: 'vite:dep-scan', +// setup(build) { +// const scripts: Record = {} + +// // external urls +// build.onResolve({ filter: externalRE }, ({ path }) => ({ +// path, +// external: true, +// })) + +// // data urls +// build.onResolve({ filter: dataUrlRE }, ({ path }) => ({ +// path, +// external: true, +// })) + +// // local scripts (` + const filePath = id.replace(normalizePath(config.root), '') + addToHTMLProxyCache(config, filePath, inlineModuleIndex, { + code: contents, + }) + js += `\nimport "${id}?html-proxy&index=${inlineModuleIndex}.js"` + shouldRemove = true + } - if (isModule) { - inlineModuleIndex++ - if (url && !isExcludedUrl(url) && !isPublicFile) { - // - const filePath = id.replace(normalizePath(config.root), '') - addToHTMLProxyCache(config, filePath, inlineModuleIndex, { - code: contents, - }) - js += `\nimport "${id}?html-proxy&index=${inlineModuleIndex}.js"` - shouldRemove = true - } - - everyScriptIsAsync &&= isAsync - someScriptsAreAsync ||= isAsync - someScriptsAreDefer ||= !isAsync - } else if (url && !isPublicFile) { - if (!isExcludedUrl(url)) { - config.logger.warn( - ` asset - for (const { start, end, url } of scriptUrls) { - if (checkPublicFile(url, config)) { - s.update( - start, - end, - partialEncodeURIPath(toOutputPublicFilePath(url)), - ) - } else if (!isExcludedUrl(url)) { - s.update( - start, - end, - partialEncodeURIPath(await urlToBuiltUrl(url, id, config, this)), - ) + // emit asset + for (const { start, end, url } of scriptUrls) { + if (checkPublicFile(url, config)) { + s.update( + start, + end, + partialEncodeURIPath(toOutputPublicFilePath(url)), + ) + } else if (!isExcludedUrl(url)) { + s.update( + start, + end, + partialEncodeURIPath( + await urlToBuiltUrl(url, id, config, this), + ), + ) + } } - } - // ignore if its url can't be resolved - const resolvedStyleUrls = await Promise.all( - styleUrls.map(async (styleUrl) => ({ - ...styleUrl, - resolved: await this.resolve(styleUrl.url, id), - })), - ) - for (const { start, end, url, resolved } of resolvedStyleUrls) { - if (resolved == null) { - config.logger.warnOnce( - `\n${url} doesn't exist at build time, it will remain unchanged to be resolved at runtime`, - ) - const importExpression = `\nimport ${JSON.stringify(url)}` - js = js.replace(importExpression, '') - } else { - s.remove(start, end) + // ignore if its url can't be resolved + const resolvedStyleUrls = await Promise.all( + styleUrls.map(async (styleUrl) => ({ + ...styleUrl, + resolved: await this.resolve(styleUrl.url, id), + })), + ) + for (const { start, end, url, resolved } of resolvedStyleUrls) { + if (resolved == null) { + config.logger.warnOnce( + `\n${url} doesn't exist at build time, it will remain unchanged to be resolved at runtime`, + ) + const importExpression = `\nimport ${JSON.stringify(url)}` + js = js.replace(importExpression, '') + } else { + s.remove(start, end) + } } - } - processedHtml.set(id, s.toString()) + processedHtml.set(id, s.toString()) - // inject module preload polyfill only when configured and needed - const { modulePreload } = config.build - if ( - modulePreload !== false && - modulePreload.polyfill && - (someScriptsAreAsync || someScriptsAreDefer) - ) { - js = `import "${modulePreloadPolyfillId}";\n${js}` - } + // inject module preload polyfill only when configured and needed + const { modulePreload } = config.build + if ( + modulePreload !== false && + modulePreload.polyfill && + (someScriptsAreAsync || someScriptsAreDefer) + ) { + js = `import "${modulePreloadPolyfillId}";\n${js}` + } - // Force rollup to keep this module from being shared between other entry points. - // If the resulting chunk is empty, it will be removed in generateBundle. - return { code: js, moduleSideEffects: 'no-treeshake' } - } + // Force rollup to keep this module from being shared between other entry points. + // If the resulting chunk is empty, it will be removed in generateBundle. + return { code: js, moduleSideEffects: 'no-treeshake' } + } + }, }, async generateBundle(options, bundle) { From 4478f316e811886acb6cee59894a3e3dcd43dc30 Mon Sep 17 00:00:00 2001 From: IWANABETHATGUY Date: Fri, 13 Sep 2024 17:18:00 +0800 Subject: [PATCH 76/81] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20worker=20filterabl?= =?UTF-8?q?e=20(#52)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/vite/src/node/plugins/worker.ts | 185 ++++++++++++----------- 1 file changed, 100 insertions(+), 85 deletions(-) diff --git a/packages/vite/src/node/plugins/worker.ts b/packages/vite/src/node/plugins/worker.ts index 288ae86d93de55..d55467c8b8c2a1 100644 --- a/packages/vite/src/node/plugins/worker.ts +++ b/packages/vite/src/node/plugins/worker.ts @@ -1,6 +1,6 @@ import path from 'node:path' import MagicString from 'magic-string' -import type { OutputChunk } from 'rolldown' +import type { OutputChunk, RolldownPlugin } from 'rolldown' import type { ResolvedConfig } from '../config' import type { Plugin } from '../plugin' import type { ViteDevServer } from '../server' @@ -209,7 +209,7 @@ export function webWorkerPostPlugin(): Plugin { } } -export function webWorkerPlugin(config: ResolvedConfig): Plugin { +export function webWorkerPlugin(config: ResolvedConfig): RolldownPlugin { const isBuild = config.command === 'build' let server: ViteDevServer const isWorker = config.isWorker @@ -217,6 +217,7 @@ export function webWorkerPlugin(config: ResolvedConfig): Plugin { return { name: 'vite:worker', + // @ts-expect-error TODO: compatible with Vite Plugin configureServer(_server) { server = _server }, @@ -232,10 +233,17 @@ export function webWorkerPlugin(config: ResolvedConfig): Plugin { }) }, - load(id) { - if (isBuild && workerOrSharedWorkerRE.test(id)) { - return '' - } + load: { + filter: { + id: { + include: [workerOrSharedWorkerRE], + }, + }, + handler(id) { + if (isBuild && workerOrSharedWorkerRE.test(id)) { + return '' + } + }, }, // TODO @underfin it's not unsupported yet @@ -245,74 +253,80 @@ export function webWorkerPlugin(config: ResolvedConfig): Plugin { // } // }, - async transform(raw, id) { - const workerFileMatch = workerFileRE.exec(id) - if (workerFileMatch) { - // if import worker by worker constructor will have query.type - // other type will be import worker by esm - const workerType = workerFileMatch[1] as WorkerType - let injectEnv = '' - - const scriptPath = JSON.stringify( - path.posix.join(config.base, ENV_PUBLIC_PATH), - ) + transform: { + filter: { + id: { + include: [workerOrSharedWorkerRE, workerFileRE], + }, + }, + async handler(raw, id) { + const workerFileMatch = workerFileRE.exec(id) + if (workerFileMatch) { + // if import worker by worker constructor will have query.type + // other type will be import worker by esm + const workerType = workerFileMatch[1] as WorkerType + let injectEnv = '' + + const scriptPath = JSON.stringify( + path.posix.join(config.base, ENV_PUBLIC_PATH), + ) - if (workerType === 'classic') { - injectEnv = `importScripts(${scriptPath})\n` - } else if (workerType === 'module') { - injectEnv = `import ${scriptPath}\n` - } else if (workerType === 'ignore') { - if (isBuild) { - injectEnv = '' - } else if (server) { - // dynamic worker type we can't know how import the env - // so we copy /@vite/env code of server transform result into file header - const { moduleGraph } = server - const module = moduleGraph.getModuleById(ENV_ENTRY) - injectEnv = module?.transformResult?.code || '' + if (workerType === 'classic') { + injectEnv = `importScripts(${scriptPath})\n` + } else if (workerType === 'module') { + injectEnv = `import ${scriptPath}\n` + } else if (workerType === 'ignore') { + if (isBuild) { + injectEnv = '' + } else if (server) { + // dynamic worker type we can't know how import the env + // so we copy /@vite/env code of server transform result into file header + const { moduleGraph } = server + const module = moduleGraph.getModuleById(ENV_ENTRY) + injectEnv = module?.transformResult?.code || '' + } } - } - if (injectEnv) { - const s = new MagicString(raw) - s.prepend(injectEnv + ';\n') - return { - code: s.toString(), - map: s.generateMap({ hires: 'boundary' }), + if (injectEnv) { + const s = new MagicString(raw) + s.prepend(injectEnv + ';\n') + return { + code: s.toString(), + map: s.generateMap({ hires: 'boundary' }), + } } + return } - return - } - const workerMatch = workerOrSharedWorkerRE.exec(id) - if (!workerMatch) return - - const { format } = config.worker - const workerConstructor = - workerMatch[1] === 'sharedworker' ? 'SharedWorker' : 'Worker' - const workerType = isBuild - ? format === 'es' - ? 'module' - : 'classic' - : 'module' - const workerTypeOption = `{ + const workerMatch = workerOrSharedWorkerRE.exec(id) + if (!workerMatch) return + + const { format } = config.worker + const workerConstructor = + workerMatch[1] === 'sharedworker' ? 'SharedWorker' : 'Worker' + const workerType = isBuild + ? format === 'es' + ? 'module' + : 'classic' + : 'module' + const workerTypeOption = `{ ${workerType === 'module' ? `type: "module",` : ''} name: options?.name }` - let urlCode: string - if (isBuild) { - if (isWorker && config.bundleChain.at(-1) === cleanUrl(id)) { - urlCode = 'self.location.href' - } else if (inlineRE.test(id)) { - const chunk = await bundleWorkerEntry(config, id) - const encodedJs = `const encodedJs = "${Buffer.from( - chunk.code, - ).toString('base64')}";` - - const code = - // Using blob URL for SharedWorker results in multiple instances of a same worker - workerConstructor === 'Worker' - ? `${encodedJs} + let urlCode: string + if (isBuild) { + if (isWorker && config.bundleChain.at(-1) === cleanUrl(id)) { + urlCode = 'self.location.href' + } else if (inlineRE.test(id)) { + const chunk = await bundleWorkerEntry(config, id) + const encodedJs = `const encodedJs = "${Buffer.from( + chunk.code, + ).toString('base64')}";` + + const code = + // Using blob URL for SharedWorker results in multiple instances of a same worker + workerConstructor === 'Worker' + ? `${encodedJs} const decodeBase64 = (base64) => Uint8Array.from(atob(base64), c => c.charCodeAt(0)); const blob = typeof self !== "undefined" && self.Blob && new Blob([${ workerType === 'classic' @@ -345,7 +359,7 @@ export function webWorkerPlugin(config: ResolvedConfig): Plugin { : '' } }` - : `${encodedJs} + : `${encodedJs} export default function WorkerWrapper(options) { return new ${workerConstructor}( "data:text/javascript;base64," + encodedJs, @@ -354,36 +368,37 @@ export function webWorkerPlugin(config: ResolvedConfig): Plugin { } ` - return { - code, - // Empty sourcemap to suppress Rollup warning - map: { mappings: '' }, + return { + code, + // Empty sourcemap to suppress Rollup warning + map: { mappings: '' }, + } + } else { + urlCode = JSON.stringify(await workerFileToUrl(config, id)) } } else { - urlCode = JSON.stringify(await workerFileToUrl(config, id)) + let url = await fileToUrl(cleanUrl(id), config, this) + url = injectQuery(url, `${WORKER_FILE_ID}&type=${workerType}`) + urlCode = JSON.stringify(url) } - } else { - let url = await fileToUrl(cleanUrl(id), config, this) - url = injectQuery(url, `${WORKER_FILE_ID}&type=${workerType}`) - urlCode = JSON.stringify(url) - } - if (urlRE.test(id)) { - return { - code: `export default ${urlCode}`, - map: { mappings: '' }, // Empty sourcemap to suppress Rollup warning + if (urlRE.test(id)) { + return { + code: `export default ${urlCode}`, + map: { mappings: '' }, // Empty sourcemap to suppress Rollup warning + } } - } - return { - code: `export default function WorkerWrapper(options) { + return { + code: `export default function WorkerWrapper(options) { return new ${workerConstructor}( ${urlCode}, ${workerTypeOption} ); }`, - map: { mappings: '' }, // Empty sourcemap to suppress Rollup warning - } + map: { mappings: '' }, // Empty sourcemap to suppress Rollup warning + } + }, }, renderChunk(code, chunk, outputOptions) { From 5de4f1bbb24ddae7dfea97b4b895c487c43c5c7b Mon Sep 17 00:00:00 2001 From: IWANABETHATGUY Date: Fri, 13 Sep 2024 17:53:30 +0800 Subject: [PATCH 77/81] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20worker=20import=20?= =?UTF-8?q?meta=20url=20(#53)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 🎸 worker import meta url * chore: 🤖 lint --- .../src/node/plugins/workerImportMetaUrl.ts | 146 ++++++++++-------- 1 file changed, 78 insertions(+), 68 deletions(-) diff --git a/packages/vite/src/node/plugins/workerImportMetaUrl.ts b/packages/vite/src/node/plugins/workerImportMetaUrl.ts index bd86a747c20fa7..428242eecf9e23 100644 --- a/packages/vite/src/node/plugins/workerImportMetaUrl.ts +++ b/packages/vite/src/node/plugins/workerImportMetaUrl.ts @@ -1,9 +1,9 @@ import path from 'node:path' import MagicString from 'magic-string' -import type { RollupError } from 'rolldown' +import type { RolldownPlugin, RollupError } from 'rolldown' import { stripLiteral } from 'strip-literal' import type { ResolvedConfig } from '../config' -import type { Plugin } from '../plugin' +// import type { Plugin } from '../plugin' import { evalValue, injectQuery, transformStableResult } from '../utils' import type { ResolveFn } from '..' import { cleanUrl, slash } from '../../shared/utils' @@ -103,7 +103,9 @@ function isIncludeWorkerImportMetaUrl(code: string): boolean { return false } -export function workerImportMetaUrlPlugin(config: ResolvedConfig): Plugin { +export function workerImportMetaUrlPlugin( + config: ResolvedConfig, +): RolldownPlugin { const isBuild = config.command === 'build' let workerResolver: ResolveFn @@ -127,79 +129,87 @@ export function workerImportMetaUrlPlugin(config: ResolvedConfig): Plugin { // } // }, - async transform(code, id, options) { - if (!options?.ssr && isIncludeWorkerImportMetaUrl(code)) { - let s: MagicString | undefined - const cleanString = stripLiteral(code) - const workerImportMetaUrlRE = - /\bnew\s+(?:Worker|SharedWorker)\s*\(\s*(new\s+URL\s*\(\s*('[^']+'|"[^"]+"|`[^`]+`)\s*,\s*import\.meta\.url\s*\))/dg - - let match: RegExpExecArray | null - while ((match = workerImportMetaUrlRE.exec(cleanString))) { - const [[, endIndex], [expStart, expEnd], [urlStart, urlEnd]] = - match.indices! - - const rawUrl = code.slice(urlStart, urlEnd) - - // potential dynamic template string - if (rawUrl[0] === '`' && rawUrl.includes('${')) { - this.error( - `\`new URL(url, import.meta.url)\` is not supported in dynamic template string.`, - expStart, - ) - } + transform: { + filter: { + code: { + include: [/(?:new Worker|new SharedWorker)/], + }, + }, + async handler(code, id, options) { + // @ts-expect-error TODO: RolldownPlugin compatible + if (!options?.ssr && isIncludeWorkerImportMetaUrl(code)) { + let s: MagicString | undefined + const cleanString = stripLiteral(code) + const workerImportMetaUrlRE = + /\bnew\s+(?:Worker|SharedWorker)\s*\(\s*(new\s+URL\s*\(\s*('[^']+'|"[^"]+"|`[^`]+`)\s*,\s*import\.meta\.url\s*\))/dg + + let match: RegExpExecArray | null + while ((match = workerImportMetaUrlRE.exec(cleanString))) { + const [[, endIndex], [expStart, expEnd], [urlStart, urlEnd]] = + match.indices! + + const rawUrl = code.slice(urlStart, urlEnd) + + // potential dynamic template string + if (rawUrl[0] === '`' && rawUrl.includes('${')) { + this.error( + `\`new URL(url, import.meta.url)\` is not supported in dynamic template string.`, + expStart, + ) + } - s ||= new MagicString(code) - const workerType = getWorkerType(code, cleanString, endIndex) - const url = rawUrl.slice(1, -1) - let file: string | undefined - if (url[0] === '.') { - file = path.resolve(path.dirname(id), url) - file = tryFsResolve(file, fsResolveOptions) ?? file - } else { - workerResolver ??= config.createResolver({ - extensions: [], - tryIndex: false, - preferRelative: true, - }) - file = await workerResolver(url, id) - file ??= - url[0] === '/' - ? slash(path.join(config.publicDir, url)) - : slash(path.resolve(path.dirname(id), url)) - } + s ||= new MagicString(code) + const workerType = getWorkerType(code, cleanString, endIndex) + const url = rawUrl.slice(1, -1) + let file: string | undefined + if (url[0] === '.') { + file = path.resolve(path.dirname(id), url) + file = tryFsResolve(file, fsResolveOptions) ?? file + } else { + workerResolver ??= config.createResolver({ + extensions: [], + tryIndex: false, + preferRelative: true, + }) + file = await workerResolver(url, id) + file ??= + url[0] === '/' + ? slash(path.join(config.publicDir, url)) + : slash(path.resolve(path.dirname(id), url)) + } - if ( - isBuild && - config.isWorker && - config.bundleChain.at(-1) === cleanUrl(file) - ) { - s.update(expStart, expEnd, 'self.location.href') - } else { - let builtUrl: string - if (isBuild) { - builtUrl = await workerFileToUrl(config, file) + if ( + isBuild && + config.isWorker && + config.bundleChain.at(-1) === cleanUrl(file) + ) { + s.update(expStart, expEnd, 'self.location.href') } else { - builtUrl = await fileToUrl(cleanUrl(file), config, this) - builtUrl = injectQuery( - builtUrl, - `${WORKER_FILE_ID}&type=${workerType}`, + let builtUrl: string + if (isBuild) { + builtUrl = await workerFileToUrl(config, file) + } else { + builtUrl = await fileToUrl(cleanUrl(file), config, this) + builtUrl = injectQuery( + builtUrl, + `${WORKER_FILE_ID}&type=${workerType}`, + ) + } + s.update( + expStart, + expEnd, + `new URL(/* @vite-ignore */ ${JSON.stringify(builtUrl)}, import.meta.url)`, ) } - s.update( - expStart, - expEnd, - `new URL(/* @vite-ignore */ ${JSON.stringify(builtUrl)}, import.meta.url)`, - ) } - } - if (s) { - return transformStableResult(s, id, config) - } + if (s) { + return transformStableResult(s, id, config) + } - return null - } + return null + } + }, }, } } From 39630a06463d0bad27dc70a9e2e527533dfd921c Mon Sep 17 00:00:00 2001 From: IWANABETHATGUY Date: Fri, 13 Sep 2024 20:26:39 +0800 Subject: [PATCH 78/81] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20add=20an=20new=20o?= =?UTF-8?q?ption=20to=20disable=20build=20report?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/vite/src/node/build.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/vite/src/node/build.ts b/packages/vite/src/node/build.ts index c584f16c5774a0..f8c1067e912bd2 100644 --- a/packages/vite/src/node/build.ts +++ b/packages/vite/src/node/build.ts @@ -49,7 +49,6 @@ import { } from './utils' import { manifestPlugin } from './plugins/manifest' import type { Logger } from './logger' -import { LogLevels } from './logger' import { dataURIPlugin } from './plugins/dataUri' import { buildImportAnalysisPlugin } from './plugins/importAnalysisBuild' import { ssrManifestPlugin } from './ssr/ssrManifestPlugin' @@ -252,6 +251,7 @@ export interface BuildOptions { * @default null */ // watch?: WatcherOptions | null + enableBuildReport?: boolean } export interface LibraryOptions { @@ -357,6 +357,7 @@ export function resolveBuildOptions( ssrEmitAssets: false, reportCompressedSize: true, chunkSizeWarningLimit: 500, + enableBuildReport: true, // watch: null, } @@ -441,7 +442,7 @@ export async function resolveBuildPlugins(config: ResolvedConfig): Promise<{ // commonjsOptions?.include.length !== 0 const rollupOptionsPlugins = options.rollupOptions.plugins const enableNativePlugin = config.experimental.enableNativePlugin - const shouldLogInfo = LogLevels[config.logLevel || 'info'] >= LogLevels.info + const enableBuildReport = config.build.enableBuildReport return { pre: [ completeSystemWrapPlugin(), @@ -469,7 +470,7 @@ export async function resolveBuildPlugins(config: ResolvedConfig): Promise<{ ] : []), ...(options.ssrManifest ? [ssrManifestPlugin(config)] : []), - shouldLogInfo ? buildReporterPlugin(config) : null, + enableBuildReport ? buildReporterPlugin(config) : null, ] : [] ).filter(Boolean) as Plugin[]), From 48087c608944b090224d47f79017ebf304a5405d Mon Sep 17 00:00:00 2001 From: IWANABETHATGUY Date: Fri, 13 Sep 2024 20:59:59 +0800 Subject: [PATCH 79/81] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20support=20native?= =?UTF-8?q?=20define?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/vite/src/node/plugins/define.ts | 17 +++++++++++++---- packages/vite/src/node/plugins/index.ts | 1 - 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/packages/vite/src/node/plugins/define.ts b/packages/vite/src/node/plugins/define.ts index a880fb0236f082..06060c13962e56 100644 --- a/packages/vite/src/node/plugins/define.ts +++ b/packages/vite/src/node/plugins/define.ts @@ -1,7 +1,7 @@ import { transform } from 'esbuild' import { TraceMap, decodedMap, encodedMap } from '@jridgewell/trace-mapping' +import type { RolldownPlugin } from 'rolldown' import type { ResolvedConfig } from '../config' -import type { Plugin } from '../plugin' import { escapeRegex } from '../utils' import { isCSSRequest } from './css' import { isHTMLRequest } from './html' @@ -11,7 +11,7 @@ const isNonJsRequest = (request: string): boolean => nonJsRe.test(request) const importMetaEnvMarker = '__vite_import_meta_env__' const importMetaEnvKeyReCache = new Map() -export function definePlugin(config: ResolvedConfig): Plugin { +export function definePlugin(config: ResolvedConfig): RolldownPlugin { const isBuild = config.command === 'build' const isBuildLib = isBuild && config.build.lib @@ -98,10 +98,10 @@ export function definePlugin(config: ResolvedConfig): Plugin { const defaultPattern = generatePattern(false) const ssrPattern = generatePattern(true) - return { + const plugin: RolldownPlugin = { name: 'vite:define', - async transform(code, id, options) { + // @ts-expect-error TODO: RolldownPlugin type compatible const ssr = options?.ssr === true if (!ssr && !isBuild) { // for dev we inject actual global defines in the vite client to @@ -169,6 +169,15 @@ export function definePlugin(config: ResolvedConfig): Plugin { return result }, } + const enableNativePlugin = config.experimental.enableNativePlugin + if (enableNativePlugin) { + delete plugin.transform + plugin.options = (option) => { + const [define, _pattern, _importMetaEnvVal] = defaultPattern + option.define = define + } + } + return plugin } export async function replaceDefine( diff --git a/packages/vite/src/node/plugins/index.ts b/packages/vite/src/node/plugins/index.ts index f5acc34702f438..586e36db56757b 100644 --- a/packages/vite/src/node/plugins/index.ts +++ b/packages/vite/src/node/plugins/index.ts @@ -121,7 +121,6 @@ export async function resolvePlugins( assetPlugin(config), ...normalPlugins, enableNativePlugin ? nativeWasmFallbackPlugin() : wasmFallbackPlugin(), - // TODO: support nativedefinePlugin definePlugin(config), cssPostPlugin(config), isBuild && buildHtmlPlugin(config), From fc9941d537e059a4fe544ccd3a6407aa94e96b15 Mon Sep 17 00:00:00 2001 From: IWANABETHATGUY Date: Fri, 13 Sep 2024 23:12:55 +0800 Subject: [PATCH 80/81] =?UTF-8?q?chore:=20=F0=9F=A4=96=20bump=20rolldown?= =?UTF-8?q?=20(#55)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/vite/package.json | 2 +- pnpm-lock.yaml | 106 ++++++++++++++++++------------------- 2 files changed, 54 insertions(+), 54 deletions(-) diff --git a/packages/vite/package.json b/packages/vite/package.json index 82b7e13d933927..50a6f4e85211da 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -88,7 +88,7 @@ "esbuild": "^0.21.3", "postcss": "^8.4.41", "rollup": "^4.20.0", - "rolldown": "0.13.2-snapshot-afc4825-20240908003426" + "rolldown": "0.13.2-snapshot-3777bfb-20240913003043" }, "optionalDependencies": { "fsevents": "~2.3.3" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 96f46adc87822a..0c03842facd206 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -228,8 +228,8 @@ importers: specifier: ^8.4.41 version: 8.4.41 rolldown: - specifier: 0.13.2-snapshot-afc4825-20240908003426 - version: 0.13.2-snapshot-afc4825-20240908003426 + specifier: 0.13.2-snapshot-3777bfb-20240913003043 + version: 0.13.2-snapshot-3777bfb-20240913003043 rollup: specifier: ^4.20.0 version: 4.21.0 @@ -3029,63 +3029,63 @@ packages: '@polka/url@1.0.0-next.24': resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} - '@rolldown/binding-darwin-arm64@0.13.2-snapshot-afc4825-20240908003426': - resolution: {integrity: sha512-chDy2B5/63JxIVkwbYPjc5kPsPUd27MDM8uwJHaP5DzaaZ6oIbXSExtzXzkchUxvB2iuQSuZ0iGhCwDIjSTbmg==} + '@rolldown/binding-darwin-arm64@0.13.2-snapshot-3777bfb-20240913003043': + resolution: {integrity: sha512-FU9dmgE3jYBtTnvE3hcMF8l+OverkfwY3WGn18Shl116yOTxYc0i9nA6wcKcuQwV+P2xJlbfgRm1a5SxX60qmA==} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@0.13.2-snapshot-afc4825-20240908003426': - resolution: {integrity: sha512-9u94cXwknm9/qjKVKdFsai/ksF6eq2BFGNjMo53H3UzJeAn5yZjc80TysqtLL8o/ndtOCotf0eTHP/5T5QpGxA==} + '@rolldown/binding-darwin-x64@0.13.2-snapshot-3777bfb-20240913003043': + resolution: {integrity: sha512-biyERm22hGKLgJi/DFMl8gl3GLZXV2snhuk6julW7XYOjRZH2LYcJu1k2QWMR2QfVMH+aB62dDnn/DRCsbhq0Q==} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@0.13.2-snapshot-afc4825-20240908003426': - resolution: {integrity: sha512-Uk7LgyyeJsUIGBp6XNZBg2o4ZrSUmYWiRyizicF+xJ2GEAsRNDlrm6BogGN/YHstuhBvOuNiK4OmIOPfl37dPw==} + '@rolldown/binding-freebsd-x64@0.13.2-snapshot-3777bfb-20240913003043': + resolution: {integrity: sha512-i6GruFLobKgo9YATAT3EhF4yOxS1hcFQpMKABZvkfYJsVp/yTY9HUegepq7FA5nLIyuy2wLLeh7V/K8YPRWVZg==} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@0.13.2-snapshot-afc4825-20240908003426': - resolution: {integrity: sha512-12SJT+ghj3c1s0CbYELTi7gzCgYsE2acoRoFCTcVo11ggN9gg0rPrBqdsj+44AucqwV6skYktAIO0Uxpb5ed7g==} + '@rolldown/binding-linux-arm-gnueabihf@0.13.2-snapshot-3777bfb-20240913003043': + resolution: {integrity: sha512-/z68xZImIjdpVqfcTDieWxO3nYPbSiGvzcnBrqN2v+BD69qijJB/unuL2ikuxVhGyU4MAuPfBgNkxyKtIgaV8A==} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@0.13.2-snapshot-afc4825-20240908003426': - resolution: {integrity: sha512-GhB+9YD29x3MQzJdsOytjunWJ67dBqcQI6G+JHl3t5RFJIKpaAimle7pY2JZoAsW4sELkop0/RSb+0CJRPXe6w==} + '@rolldown/binding-linux-arm64-gnu@0.13.2-snapshot-3777bfb-20240913003043': + resolution: {integrity: sha512-Xq27S6l5mDBHiuC+9b3mtmYBBAE+rtEqSaShvzF6yY1D7fZ9FDMnBUMC1TUiJjbYH5msbNsy4JwRiWAGUSrxNw==} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-musl@0.13.2-snapshot-afc4825-20240908003426': - resolution: {integrity: sha512-SAqzJaIZOtNb+6iPyMJLtsUyQvFT3Awe+vXL4jU1OoB+fPJhkHmsm9y1o7tGRwEgZC0eeeFXPfKiRRKjBL640w==} + '@rolldown/binding-linux-arm64-musl@0.13.2-snapshot-3777bfb-20240913003043': + resolution: {integrity: sha512-zUqz5M/8qDzrsIVADHp85M1498GdxTq0jQcGv8a+zaICHEBMKj/wvxgMsWY/mzPt3wONWz/sBYDFJ4tF8sj+FQ==} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-x64-gnu@0.13.2-snapshot-afc4825-20240908003426': - resolution: {integrity: sha512-CklPudIc8W7MdNs133LLojffYCFdr8Jf5kxJfHnwtC5h7m1hYkTnvaIfGPz8RMzIEHk1H2dbtDUpi205sH3pjg==} + '@rolldown/binding-linux-x64-gnu@0.13.2-snapshot-3777bfb-20240913003043': + resolution: {integrity: sha512-KUEPwxMinfyRrsJBJihFPpS5hFULQKO2P/P+EcymOvss3N6oLAeHoM/RZaV0gwjWG32cMQdNV2+Q81EavmdgWQ==} cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-musl@0.13.2-snapshot-afc4825-20240908003426': - resolution: {integrity: sha512-Fl3XTick8pih01w3nvzYWQbcCQFsagAfPDLms7vi1/TVDLc/dK576Y5EwOgH0tz9PiNEZSNestZjemFfeiyZyQ==} + '@rolldown/binding-linux-x64-musl@0.13.2-snapshot-3777bfb-20240913003043': + resolution: {integrity: sha512-IsC8Ekp5G4DUOOb4zsuZTyDkwDTW1ItBaQOW3rRMBJBLNKOBY3Uli3v8aFO5puMKu/2X6HI+QZRmoF1mBYYmqA==} cpu: [x64] os: [linux] - '@rolldown/binding-wasm32-wasi@0.13.2-snapshot-afc4825-20240908003426': - resolution: {integrity: sha512-+EYFpITX7SfsJ+hUr0k5vm7OGww9vx34BloCgWhk+uPbEJUgRCnT+utsR6NxebmIvNHa9Tdlzg/O2IB4RhKEQA==} + '@rolldown/binding-wasm32-wasi@0.13.2-snapshot-3777bfb-20240913003043': + resolution: {integrity: sha512-sjrxNXP45PPnu911+KuAMO82uCNtzep2FUaPj02bGG9WceOAWEtAEZHTrkJNQt4KtGTGv+651jbHE2CXW66LvA==} engines: {node: '>=14.21.3'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@0.13.2-snapshot-afc4825-20240908003426': - resolution: {integrity: sha512-Iy66GJUG4iOr0tKgbB2g+qr1vsGCTrP4KNFCAdt91jhUFO2cEiGoq2MeLbLaql2k4KHOT4kJK1seyFrVfMRKwQ==} + '@rolldown/binding-win32-arm64-msvc@0.13.2-snapshot-3777bfb-20240913003043': + resolution: {integrity: sha512-+zOWWLHgphmc9YfkYgv/c8xshbA0m1WO+Seos9oXABuzCtb0plKKTDWtsFKYIK6xBaCSU4T++l/hPXDrVQ9BcQ==} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-ia32-msvc@0.13.2-snapshot-afc4825-20240908003426': - resolution: {integrity: sha512-O2G78y7jnTWW18MTZur4+ZcUckWamJ0vJVkj3fAmrIPdBQM8FWVbaWRt9xfrRQMieS34aLw3owhdq/WSNPidXg==} + '@rolldown/binding-win32-ia32-msvc@0.13.2-snapshot-3777bfb-20240913003043': + resolution: {integrity: sha512-MTUUw0vOQY6mr5gn7KM1hERKM11jxCQeAqAu+Pe2vVeSYqnTFcUZuUzXDml2rrhXnLIojtwp4AsW/IN+Np8XGA==} cpu: [ia32] os: [win32] - '@rolldown/binding-win32-x64-msvc@0.13.2-snapshot-afc4825-20240908003426': - resolution: {integrity: sha512-T/sD/u8LP28olS1MS0qAmgreS2LeKi/lglsLLeZzgmgISzmlX25k3lgUrZ4C5YCf2LCHmIihZjDUbvzFsk+yCQ==} + '@rolldown/binding-win32-x64-msvc@0.13.2-snapshot-3777bfb-20240913003043': + resolution: {integrity: sha512-SshSu6zs/Rbu63CZQQoUDPVRuX3d/3Y3Dtio5jT8T49mnQxQ4M1E3IKysW5fJzkbPeL5ET4C1lGMpOLo40BAGg==} cpu: [x64] os: [win32] @@ -6226,8 +6226,8 @@ packages: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true - rolldown@0.13.2-snapshot-afc4825-20240908003426: - resolution: {integrity: sha512-RXbvTQvjd4tePIPNFLbvUW3Qb0nkFX/vSeKT6WKj5Nx5zQCmE0vjTyaDHDzygOpWrrz9Q+iwQI4eJTMJlQhblg==} + rolldown@0.13.2-snapshot-3777bfb-20240913003043: + resolution: {integrity: sha512-jIkGka4zPkiqpEjPBkaMgRGivbvQQTYV1usKQOWsOIKiiweuJ1ebuA41KdosaSIDNxYjA0yBKIQKMSZkvfqYQQ==} hasBin: true rollup-plugin-dts@6.1.1: @@ -8592,42 +8592,42 @@ snapshots: '@polka/url@1.0.0-next.24': {} - '@rolldown/binding-darwin-arm64@0.13.2-snapshot-afc4825-20240908003426': + '@rolldown/binding-darwin-arm64@0.13.2-snapshot-3777bfb-20240913003043': optional: true - '@rolldown/binding-darwin-x64@0.13.2-snapshot-afc4825-20240908003426': + '@rolldown/binding-darwin-x64@0.13.2-snapshot-3777bfb-20240913003043': optional: true - '@rolldown/binding-freebsd-x64@0.13.2-snapshot-afc4825-20240908003426': + '@rolldown/binding-freebsd-x64@0.13.2-snapshot-3777bfb-20240913003043': optional: true - '@rolldown/binding-linux-arm-gnueabihf@0.13.2-snapshot-afc4825-20240908003426': + '@rolldown/binding-linux-arm-gnueabihf@0.13.2-snapshot-3777bfb-20240913003043': optional: true - '@rolldown/binding-linux-arm64-gnu@0.13.2-snapshot-afc4825-20240908003426': + '@rolldown/binding-linux-arm64-gnu@0.13.2-snapshot-3777bfb-20240913003043': optional: true - '@rolldown/binding-linux-arm64-musl@0.13.2-snapshot-afc4825-20240908003426': + '@rolldown/binding-linux-arm64-musl@0.13.2-snapshot-3777bfb-20240913003043': optional: true - '@rolldown/binding-linux-x64-gnu@0.13.2-snapshot-afc4825-20240908003426': + '@rolldown/binding-linux-x64-gnu@0.13.2-snapshot-3777bfb-20240913003043': optional: true - '@rolldown/binding-linux-x64-musl@0.13.2-snapshot-afc4825-20240908003426': + '@rolldown/binding-linux-x64-musl@0.13.2-snapshot-3777bfb-20240913003043': optional: true - '@rolldown/binding-wasm32-wasi@0.13.2-snapshot-afc4825-20240908003426': + '@rolldown/binding-wasm32-wasi@0.13.2-snapshot-3777bfb-20240913003043': dependencies: '@napi-rs/wasm-runtime': 0.2.4 optional: true - '@rolldown/binding-win32-arm64-msvc@0.13.2-snapshot-afc4825-20240908003426': + '@rolldown/binding-win32-arm64-msvc@0.13.2-snapshot-3777bfb-20240913003043': optional: true - '@rolldown/binding-win32-ia32-msvc@0.13.2-snapshot-afc4825-20240908003426': + '@rolldown/binding-win32-ia32-msvc@0.13.2-snapshot-3777bfb-20240913003043': optional: true - '@rolldown/binding-win32-x64-msvc@0.13.2-snapshot-afc4825-20240908003426': + '@rolldown/binding-win32-x64-msvc@0.13.2-snapshot-3777bfb-20240913003043': optional: true '@rollup/plugin-alias@5.1.0(rollup@3.29.4)': @@ -12104,22 +12104,22 @@ snapshots: dependencies: glob: 10.4.5 - rolldown@0.13.2-snapshot-afc4825-20240908003426: + rolldown@0.13.2-snapshot-3777bfb-20240913003043: dependencies: zod: 3.23.8 optionalDependencies: - '@rolldown/binding-darwin-arm64': 0.13.2-snapshot-afc4825-20240908003426 - '@rolldown/binding-darwin-x64': 0.13.2-snapshot-afc4825-20240908003426 - '@rolldown/binding-freebsd-x64': 0.13.2-snapshot-afc4825-20240908003426 - '@rolldown/binding-linux-arm-gnueabihf': 0.13.2-snapshot-afc4825-20240908003426 - '@rolldown/binding-linux-arm64-gnu': 0.13.2-snapshot-afc4825-20240908003426 - '@rolldown/binding-linux-arm64-musl': 0.13.2-snapshot-afc4825-20240908003426 - '@rolldown/binding-linux-x64-gnu': 0.13.2-snapshot-afc4825-20240908003426 - '@rolldown/binding-linux-x64-musl': 0.13.2-snapshot-afc4825-20240908003426 - '@rolldown/binding-wasm32-wasi': 0.13.2-snapshot-afc4825-20240908003426 - '@rolldown/binding-win32-arm64-msvc': 0.13.2-snapshot-afc4825-20240908003426 - '@rolldown/binding-win32-ia32-msvc': 0.13.2-snapshot-afc4825-20240908003426 - '@rolldown/binding-win32-x64-msvc': 0.13.2-snapshot-afc4825-20240908003426 + '@rolldown/binding-darwin-arm64': 0.13.2-snapshot-3777bfb-20240913003043 + '@rolldown/binding-darwin-x64': 0.13.2-snapshot-3777bfb-20240913003043 + '@rolldown/binding-freebsd-x64': 0.13.2-snapshot-3777bfb-20240913003043 + '@rolldown/binding-linux-arm-gnueabihf': 0.13.2-snapshot-3777bfb-20240913003043 + '@rolldown/binding-linux-arm64-gnu': 0.13.2-snapshot-3777bfb-20240913003043 + '@rolldown/binding-linux-arm64-musl': 0.13.2-snapshot-3777bfb-20240913003043 + '@rolldown/binding-linux-x64-gnu': 0.13.2-snapshot-3777bfb-20240913003043 + '@rolldown/binding-linux-x64-musl': 0.13.2-snapshot-3777bfb-20240913003043 + '@rolldown/binding-wasm32-wasi': 0.13.2-snapshot-3777bfb-20240913003043 + '@rolldown/binding-win32-arm64-msvc': 0.13.2-snapshot-3777bfb-20240913003043 + '@rolldown/binding-win32-ia32-msvc': 0.13.2-snapshot-3777bfb-20240913003043 + '@rolldown/binding-win32-x64-msvc': 0.13.2-snapshot-3777bfb-20240913003043 rollup-plugin-dts@6.1.1(rollup@3.29.4)(typescript@5.5.3): dependencies: From f597c1a66042a577324b6cfaa22a090744be187c Mon Sep 17 00:00:00 2001 From: IWANABETHATGUY Date: Sat, 14 Sep 2024 18:59:59 +0800 Subject: [PATCH 81/81] =?UTF-8?q?perf:=20=E2=9A=A1=EF=B8=8F=20use=20defaul?= =?UTF-8?q?t=20resolver=20(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/vite/src/node/build.ts | 4 +-- packages/vite/src/node/plugins/index.ts | 36 +++++++++++++------------ 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/packages/vite/src/node/build.ts b/packages/vite/src/node/build.ts index f8c1067e912bd2..3e007a3b4ee62a 100644 --- a/packages/vite/src/node/build.ts +++ b/packages/vite/src/node/build.ts @@ -456,9 +456,7 @@ export async function resolveBuildPlugins(config: ResolvedConfig): Promise<{ ].filter(Boolean) as Plugin[], post: [ ...buildImportAnalysisPlugin(config), - ...(config.esbuild !== false && !enableNativePlugin - ? [buildEsbuildPlugin(config)] - : []), + ...(config.esbuild !== false ? [buildEsbuildPlugin(config)] : []), ...(options.minify ? [terserPlugin(config)] : []), ...((!config.isWorker ? [ diff --git a/packages/vite/src/node/plugins/index.ts b/packages/vite/src/node/plugins/index.ts index 586e36db56757b..7802fd381e6624 100644 --- a/packages/vite/src/node/plugins/index.ts +++ b/packages/vite/src/node/plugins/index.ts @@ -80,23 +80,25 @@ export async function resolvePlugins( }) : modulePreloadPolyfillPlugin(config) : null, - resolvePlugin({ - ...config.resolve, - root: config.root, - isProduction: config.isProduction, - isBuild, - packageCache: config.packageCache, - ssrConfig: config.ssr, - asSrc: true, - fsUtils: getFsUtils(config), - getDepsOptimizer: isBuild - ? undefined - : (ssr: boolean) => getDepsOptimizer(config, ssr), - shouldExternalize: - isBuild && config.build.ssr - ? (id, importer) => shouldExternalizeForSSR(id, importer, config) - : undefined, - }), + enableNativePlugin + ? null + : resolvePlugin({ + ...config.resolve, + root: config.root, + isProduction: config.isProduction, + isBuild, + packageCache: config.packageCache, + ssrConfig: config.ssr, + asSrc: true, + fsUtils: getFsUtils(config), + getDepsOptimizer: isBuild + ? undefined + : (ssr: boolean) => getDepsOptimizer(config, ssr), + shouldExternalize: + isBuild && config.build.ssr + ? (id, importer) => shouldExternalizeForSSR(id, importer, config) + : undefined, + }), htmlInlineProxyPlugin(config), cssPlugin(config), config.esbuild !== false