mirror of
https://github.com/hanzoai/next.js.git
synced 2026-10-30 14:46:38 +00:00
This PR is looking to reduce the size of the runtime we're shipping. The goal is to not include worker helpers in the default runtime, if workers aren't being used / imported. The `createWorker()` function has been removed from the runtime. It now exists in `turbopack-ecmascript/js/src/worker/browser/createWorker.ts` and `turbopack-ecmascript/js/src/worker/node/createWorker.ts`. The reason behind having them in `turbopack-ecmascript` is that in `turbopack-ecmascript/src/worker_chunk/module.rs` we can then create a worker module (see `create_worker_module()`). This is then returned by `references()` as a `SingleChunkableModuleReference`. Instead of using `createWorker()` from the runtime we can instead now import it from that module. There are a couple of things in this PR that I'd like to flag for discussion: 1) The location of the JavaScript. Shipping it in `turbopack-ecmascript` doesn't quite feel natural; however, `turbopack-ecmascript-runtime` imports `turbopack-ecmascript` so I didn't want to create a circular dependency by importing `turbopack-ecmascript-runtime` in `turbopack-ecmascript`. 2) There a couple of things in the runtime that we need inside of `createWorker()`, they are: ```javascript TURBOPACK_ASSET_SUFFIX, TURBOPACK_CHUNK_BASE_PATH ``` which are values from the runtime we needed to references and: ```javascript function getChunkRelativeUrl( chunkPath: ChunkPath | ChunkListPath, basePath: string = CHUNK_BASE_PATH ): ChunkUrl ``` which is `TURBOPACK_CHUNK_RELATIVE_URL`. These currently exist in the runtime. To make them available, I've placed them in `browserContextPrototype` and `contextPrototype` in the node version. We also have a code gen that inserts the values of `_TURBOPACK_WORKER_FORWARDED_GLOBALS_` and `_TURBOPACK_WORKER_BASE_PATH_` during the analyzer's pass through free variables (takes them out of the chunking context). @lukesandberg curious to hear your thoughts about these! --------- Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com>