From 96dad6e08fecd3dd318644e4e49c3f6ff7ece4e5 Mon Sep 17 00:00:00 2001 From: Will Binns-Smith Date: Tue, 17 Jan 2023 11:40:21 -0800 Subject: [PATCH] Expose `process.turbopack` to js run from turbopack-node --- crates/turbopack-node/js/src/globals.ts | 2 ++ crates/turbopack-node/src/evaluate.rs | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 crates/turbopack-node/js/src/globals.ts diff --git a/crates/turbopack-node/js/src/globals.ts b/crates/turbopack-node/js/src/globals.ts new file mode 100644 index 0000000000000..257842725280c --- /dev/null +++ b/crates/turbopack-node/js/src/globals.ts @@ -0,0 +1,2 @@ +// @ts-ignore +process.turbopack = {}; diff --git a/crates/turbopack-node/src/evaluate.rs b/crates/turbopack-node/src/evaluate.rs index ac31b2ce7dfd4..7fb42842bd1d7 100644 --- a/crates/turbopack-node/src/evaluate.rs +++ b/crates/turbopack-node/src/evaluate.rs @@ -92,6 +92,27 @@ pub async fn get_evaluate_pool( let (Some(cwd), Some(entrypoint)) = (to_sys_path(cwd).await?, to_sys_path(path).await?) else { panic!("can only evaluate from a disk filesystem"); }; + + let runtime_entries = { + let globals_module = EcmascriptModuleAssetVc::new( + SourceAssetVc::new(embed_file_path("globals.ts")).into(), + context, + Value::new(EcmascriptModuleAssetType::Typescript), + EcmascriptInputTransformsVc::cell(vec![EcmascriptInputTransform::TypeScript]), + context.environment(), + ) + .as_ecmascript_chunk_placeable(); + + let mut entries = vec![globals_module]; + if let Some(other_entries) = runtime_entries { + for entry in &*other_entries.await? { + entries.push(*entry) + } + }; + + Some(EcmascriptChunkPlaceablesVc::cell(entries)) + }; + let bootstrap = NodeJsBootstrapAsset { path, chunk_group: ChunkGroupVc::from_chunk(