-
Notifications
You must be signed in to change notification settings - Fork 26.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
refactor(analysis): rust based page-static-info, deprecate js parse interface in next-swc #59300
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ijjk
added
Turbopack
Related to Turbopack with Next.js.
created-by: Turbopack team
PRs by the turbopack team
type: next
labels
Dec 5, 2023
kwonoj
changed the title
refactor(analysis): port check_exports to napi
[DONOTMERGE] refactor(analysis): port check_exports to napi
Dec 5, 2023
Stats from current PRDefault Build (Increase detected
|
vercel/next.js canary | vercel/next.js refactor-parse-module | Change | |
---|---|---|---|
buildDuration | 9.3s | 11.6s | |
buildDurationCached | 5.7s | 4.9s | N/A |
nodeModulesSize | 200 MB | 200 MB | N/A |
nextStartRea..uration (ms) | 426ms | 427ms | N/A |
Client Bundles (main, webpack)
vercel/next.js canary | vercel/next.js refactor-parse-module | Change | |
---|---|---|---|
193.HASH.js gzip | 181 B | 182 B | N/A |
26-HASH.js gzip | 28.9 kB | 29 kB | N/A |
3f784ff6-HASH.js gzip | 53.4 kB | 53.4 kB | ✓ |
framework-HASH.js gzip | 45.2 kB | 45.2 kB | ✓ |
main-app-HASH.js gzip | 216 B | 244 B | N/A |
main-HASH.js gzip | 31.8 kB | 31.8 kB | N/A |
webpack-HASH.js gzip | 1.7 kB | 1.7 kB | N/A |
Overall change | 98.6 kB | 98.6 kB | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | vercel/next.js refactor-parse-module | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
Overall change | 31 kB | 31 kB | ✓ |
Client Pages
vercel/next.js canary | vercel/next.js refactor-parse-module | Change | |
---|---|---|---|
_app-HASH.js gzip | 194 B | 195 B | N/A |
_error-HASH.js gzip | 183 B | 181 B | N/A |
amp-HASH.js gzip | 504 B | 502 B | N/A |
css-HASH.js gzip | 321 B | 321 B | ✓ |
dynamic-HASH.js gzip | 2.5 kB | 2.5 kB | N/A |
edge-ssr-HASH.js gzip | 255 B | 253 B | N/A |
head-HASH.js gzip | 350 B | 349 B | N/A |
hooks-HASH.js gzip | 369 B | 369 B | ✓ |
image-HASH.js gzip | 4.18 kB | 4.18 kB | N/A |
index-HASH.js gzip | 255 B | 256 B | N/A |
link-HASH.js gzip | 2.61 kB | 2.61 kB | ✓ |
routerDirect..HASH.js gzip | 312 B | 311 B | N/A |
script-HASH.js gzip | 385 B | 383 B | N/A |
withRouter-HASH.js gzip | 307 B | 308 B | N/A |
1afbb74e6ecf..834.css gzip | 106 B | 106 B | ✓ |
Overall change | 3.4 kB | 3.4 kB | ✓ |
Client Build Manifests
vercel/next.js canary | vercel/next.js refactor-parse-module | Change | |
---|---|---|---|
_buildManifest.js gzip | 484 B | 485 B | N/A |
Overall change | 0 B | 0 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | vercel/next.js refactor-parse-module | Change | |
---|---|---|---|
index.html gzip | 529 B | 528 B | N/A |
link.html gzip | 541 B | 540 B | N/A |
withRouter.html gzip | 524 B | 523 B | N/A |
Overall change | 0 B | 0 B | ✓ |
Edge SSR bundle Size Overall increase ⚠️
vercel/next.js canary | vercel/next.js refactor-parse-module | Change | |
---|---|---|---|
page.js gzip | 917 B | 149 kB | |
edge-ssr.js gzip | N/A | 94 kB | N/A |
Overall change | 917 B | 149 kB |
Middleware size Overall increase ⚠️
vercel/next.js canary | vercel/next.js refactor-parse-module | Change | |
---|---|---|---|
middleware-b..fest.js gzip | 624 B | 625 B | N/A |
middleware-r..fest.js gzip | 151 B | 151 B | ✓ |
middleware.js gzip | 37.4 kB | 37.5 kB | |
edge-runtime..pack.js gzip | 1.72 kB | 1.92 kB | |
Overall change | 39.2 kB | 39.6 kB |
Next Runtimes
vercel/next.js canary | vercel/next.js refactor-parse-module | Change | |
---|---|---|---|
app-page-exp...dev.js gzip | 169 kB | 169 kB | ✓ |
app-page-exp..prod.js gzip | 95.6 kB | 95.6 kB | ✓ |
app-page-tur..prod.js gzip | 96.3 kB | 96.3 kB | ✓ |
app-page-tur..prod.js gzip | 90.9 kB | 90.9 kB | ✓ |
app-page.run...dev.js gzip | 142 kB | 142 kB | ✓ |
app-page.run..prod.js gzip | 90.2 kB | 90.2 kB | ✓ |
app-route-ex...dev.js gzip | 24.2 kB | 24.2 kB | ✓ |
app-route-ex..prod.js gzip | 16.9 kB | 16.9 kB | ✓ |
app-route-tu..prod.js gzip | 16.9 kB | 16.9 kB | ✓ |
app-route-tu..prod.js gzip | 16.4 kB | 16.4 kB | ✓ |
app-route.ru...dev.js gzip | 23.6 kB | 23.6 kB | ✓ |
app-route.ru..prod.js gzip | 16.4 kB | 16.4 kB | ✓ |
pages-api-tu..prod.js gzip | 9.41 kB | 9.41 kB | ✓ |
pages-api.ru...dev.js gzip | 9.68 kB | 9.68 kB | ✓ |
pages-api.ru..prod.js gzip | 9.4 kB | 9.4 kB | ✓ |
pages-turbo...prod.js gzip | 22 kB | 22 kB | ✓ |
pages.runtim...dev.js gzip | 22.6 kB | 22.6 kB | ✓ |
pages.runtim..prod.js gzip | 22 kB | 22 kB | ✓ |
server.runti..prod.js gzip | 49.7 kB | 49.7 kB | ✓ |
Overall change | 944 kB | 944 kB | ✓ |
Diff details
Diff for page.js
failed to diff
Diff for edge-runtime-webpack.js
@@ -96,6 +96,21 @@
/******/
})();
/******/
+ /******/ /* webpack/runtime/compat get default export */
+ /******/ (() => {
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
+ /******/ __webpack_require__.n = (module) => {
+ /******/ var getter =
+ module && module.__esModule
+ ? /******/ () => module["default"]
+ : /******/ () => module;
+ /******/ __webpack_require__.d(getter, { a: getter });
+ /******/ return getter;
+ /******/
+ };
+ /******/
+ })();
+ /******/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
@@ -118,6 +133,15 @@
/******/
})();
/******/
+ /******/ /* webpack/runtime/ensure chunk */
+ /******/ (() => {
+ /******/ // The chunk loading function for additional chunks
+ /******/ // Since all referenced chunks are already included
+ /******/ // in this file, this function is empty here.
+ /******/ __webpack_require__.e = () => Promise.resolve();
+ /******/
+ })();
+ /******/
/******/ /* webpack/runtime/global */
/******/ (() => {
/******/ __webpack_require__.g = (function () {
Diff for middleware.js
Diff too large to display
Diff for edge-ssr.js
Diff too large to display
Diff for 26-HASH.js
Diff too large to display
Diff for main-app-HASH.js
@@ -1,28 +1,40 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[744],
{
- /***/ 7224: /***/ function (
+ /***/ 1062: /***/ function (
__unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
) {
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 8438, 23)
+ __webpack_require__.t.bind(__webpack_require__, 7480, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 6367, 23)
+ __webpack_require__.t.bind(__webpack_require__, 7394, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 2267, 23)
+ __webpack_require__.t.bind(__webpack_require__, 6406, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 7202, 23)
+ __webpack_require__.t.bind(__webpack_require__, 5828, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 6516, 23)
+ __webpack_require__.t.bind(__webpack_require__, 7493, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 9061, 23)
+ __webpack_require__.t.bind(__webpack_require__, 8398, 23)
+ );
+ Promise.resolve(/* import() eager */).then(
+ __webpack_require__.t.bind(__webpack_require__, 4320, 23)
+ );
+ Promise.resolve(/* import() eager */).then(
+ __webpack_require__.t.bind(__webpack_require__, 3311, 23)
+ );
+ Promise.resolve(/* import() eager */).then(
+ __webpack_require__.bind(__webpack_require__, 5908)
+ );
+ Promise.resolve(/* import() eager */).then(
+ __webpack_require__.t.bind(__webpack_require__, 7916, 23)
);
/***/
@@ -33,8 +45,8 @@
/******/ var __webpack_exec__ = function (moduleId) {
return __webpack_require__((__webpack_require__.s = moduleId));
};
- /******/ __webpack_require__.O(0, [904, 26], function () {
- return __webpack_exec__(534), __webpack_exec__(7224);
+ /******/ __webpack_require__.O(0, [658, 724], function () {
+ return __webpack_exec__(1836), __webpack_exec__(1062);
});
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
kwonoj
force-pushed
the
refactor-parse-module
branch
from
December 5, 2023 18:24
fe25ca3
to
f7aff08
Compare
Tests Passed |
kwonoj
force-pushed
the
refactor-parse-module
branch
23 times, most recently
from
December 8, 2023 00:20
497a9e0
to
dfb8913
Compare
kwonoj
force-pushed
the
refactor-parse-module
branch
from
December 12, 2023 18:56
b7f2836
to
4dca03f
Compare
kwonoj
force-pushed
the
refactor-parse-module
branch
5 times, most recently
from
January 11, 2024 23:52
43ad2b0
to
030459b
Compare
kwonoj
force-pushed
the
refactor-parse-module
branch
2 times, most recently
from
January 16, 2024 19:03
f8e7a54
to
776135c
Compare
timneutkens
reviewed
Jan 16, 2024
return astStr | ||
analysis: { | ||
isDynamicMetadataRoute: async (pageFilePath: string) => { | ||
const fileContent = (await tryToReadFile(pageFilePath, true)) || '' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For swc-loader transforms we have the SWC-side read the file, seems we could do the same here in a follow-up PR.
timneutkens
reviewed
Jan 16, 2024
timneutkens
approved these changes
Jan 17, 2024
kwonoj
force-pushed
the
refactor-parse-module
branch
from
January 22, 2024 19:04
60ce73b
to
8629807
Compare
kwonoj
force-pushed
the
refactor-parse-module
branch
from
January 22, 2024 21:22
8629807
to
272ca3f
Compare
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Labels
created-by: Turbopack team
PRs by the turbopack team
locked
Turbopack
Related to Turbopack with Next.js.
type: next
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This PR refactors existing
analysis/get-static-page-info
, moves over most of parse / ast visiting logic into next-swc's rust codebase. By having this, turbopack can reuse same logic to extract info for the analysis. Also as a side effect, this removes JS side parse which is known to be inefficient due to serialization / deserialization.The entrypoint
getPageStaticInfo
is still in the existingget-page-static-info
, only for extracting / visiting logic is moved. There are some JS specific context to postprocess extracted information which would require additional effort to move into.Closes PACK-2088