From be97170a193e8cecc5ce03ecd3c1d0add4a06bf7 Mon Sep 17 00:00:00 2001 From: David Sherret Date: Wed, 25 Oct 2023 14:39:00 -0400 Subject: feat(unstable): ability to `npm install` then `deno run main.ts` (#20967) This PR adds a new unstable "bring your own node_modules" (BYONM) functionality currently behind a `--unstable-byonm` flag (`"unstable": ["byonm"]` in a deno.json). This enables users to run a separate install command (ex. `npm install`, `pnpm install`) then run `deno run main.ts` and Deno will respect the layout of the node_modules directory as setup by the separate install command. It also works with npm/yarn/pnpm workspaces. For this PR, the behaviour is opted into by specifying `--unstable-byonm`/`"unstable": ["byonm"]`, but in the future we may make this the default behaviour as outlined in https://github.com/denoland/deno/issues/18967#issuecomment-1761248941 This is an extremely rough initial implementation. Errors are terrible in this and the LSP requires frequent restarts. Improvements will be done in follow up PRs. --- cli/module_loader.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'cli/module_loader.rs') diff --git a/cli/module_loader.rs b/cli/module_loader.rs index 3f5e82d8c..f193c7e15 100644 --- a/cli/module_loader.rs +++ b/cli/module_loader.rs @@ -738,7 +738,7 @@ impl CliNodeResolver { .with_context(|| format!("Could not resolve '{}'.", req_ref)) } - fn resolve_package_sub_path( + pub fn resolve_package_sub_path( &self, package_folder: &Path, sub_path: Option<&str>, @@ -881,7 +881,7 @@ impl NpmModuleLoader { } /// Keeps track of what module specifiers were resolved as CJS. -#[derive(Default)] +#[derive(Debug, Default)] pub struct CjsResolutionStore(Mutex>); impl CjsResolutionStore { -- cgit v1.2.3