diff options
Diffstat (limited to 'cli/standalone/mod.rs')
-rw-r--r-- | cli/standalone/mod.rs | 129 |
1 files changed, 53 insertions, 76 deletions
diff --git a/cli/standalone/mod.rs b/cli/standalone/mod.rs index 442334e39..64d56e6a5 100644 --- a/cli/standalone/mod.rs +++ b/cli/standalone/mod.rs @@ -14,14 +14,12 @@ use crate::http_util::HttpClient; use crate::module_loader::CjsResolutionStore; use crate::module_loader::NpmModuleLoader; use crate::node::CliCjsCodeAnalyzer; -use crate::npm::create_npm_fs_resolver; -use crate::npm::CliNpmRegistryApi; -use crate::npm::CliNpmResolver; -use crate::npm::ManagedCliNpmResolver; -use crate::npm::NpmCache; +use crate::npm::create_cli_npm_resolver; +use crate::npm::CliNpmResolverCreateOptions; +use crate::npm::CliNpmResolverManagedCreateOptions; +use crate::npm::CliNpmResolverManagedPackageJsonInstallerOption; +use crate::npm::CliNpmResolverManagedSnapshotOption; use crate::npm::NpmCacheDir; -use crate::npm::NpmResolution; -use crate::npm::PackageJsonDepsInstaller; use crate::resolver::MappedSpecifierResolver; use crate::util::progress_bar::ProgressBar; use crate::util::progress_bar::ProgressBarStyle; @@ -40,7 +38,6 @@ use deno_core::ModuleLoader; use deno_core::ModuleSpecifier; use deno_core::ModuleType; use deno_core::ResolutionKind; -use deno_npm::NpmSystemInfo; use deno_runtime::deno_fs; use deno_runtime::deno_node::analyze::NodeCodeTranslator; use deno_runtime::deno_node::NodeResolver; @@ -309,82 +306,62 @@ pub async fn run( .join(format!("deno-compile-{}", current_exe_name)) .join("node_modules"); let npm_cache_dir = NpmCacheDir::new(root_path.clone()); - let (fs, vfs_root, node_modules_path, snapshot) = if let Some(snapshot) = - eszip.take_npm_snapshot() - { - let vfs_root_dir_path = if metadata.node_modules_dir { - root_path - } else { - npm_cache_dir.registry_folder(&npm_registry_url) - }; - let vfs = load_npm_vfs(vfs_root_dir_path.clone()) - .context("Failed to load npm vfs.")?; - let node_modules_path = if metadata.node_modules_dir { - Some(vfs.root().to_path_buf()) + let npm_global_cache_dir = npm_cache_dir.get_cache_location(); + let (fs, vfs_root, maybe_node_modules_path, maybe_snapshot) = + if let Some(snapshot) = eszip.take_npm_snapshot() { + let vfs_root_dir_path = if metadata.node_modules_dir { + root_path + } else { + npm_cache_dir.registry_folder(&npm_registry_url) + }; + let vfs = load_npm_vfs(vfs_root_dir_path.clone()) + .context("Failed to load npm vfs.")?; + let node_modules_path = if metadata.node_modules_dir { + Some(vfs.root().to_path_buf()) + } else { + None + }; + ( + Arc::new(DenoCompileFileSystem::new(vfs)) + as Arc<dyn deno_fs::FileSystem>, + Some(vfs_root_dir_path), + node_modules_path, + Some(snapshot), + ) } else { - None + ( + Arc::new(deno_fs::RealFs) as Arc<dyn deno_fs::FileSystem>, + None, + None, + None, + ) }; - ( - Arc::new(DenoCompileFileSystem::new(vfs)) as Arc<dyn deno_fs::FileSystem>, - Some(vfs_root_dir_path), - node_modules_path, - Some(snapshot), - ) - } else { - ( - Arc::new(deno_fs::RealFs) as Arc<dyn deno_fs::FileSystem>, - None, - None, - None, - ) - }; - let npm_cache = Arc::new(NpmCache::new( - npm_cache_dir, - CacheSetting::Only, - fs.clone(), - http_client.clone(), - progress_bar.clone(), - )); - let npm_api = Arc::new(CliNpmRegistryApi::new( - npm_registry_url.clone(), - npm_cache.clone(), - http_client.clone(), - progress_bar.clone(), - )); - let npm_resolution = Arc::new(NpmResolution::from_serialized( - npm_api.clone(), - snapshot, - None, - )); - let has_node_modules_dir = node_modules_path.is_some(); - let npm_fs_resolver = create_npm_fs_resolver( - fs.clone(), - npm_cache, - &progress_bar, - npm_registry_url, - npm_resolution.clone(), - node_modules_path, - NpmSystemInfo::default(), - ); + let has_node_modules_dir = maybe_node_modules_path.is_some(); let package_json_deps_provider = Arc::new(PackageJsonDepsProvider::new( metadata .package_json_deps .map(|serialized| serialized.into_deps()), )); - let package_json_installer = Arc::new(PackageJsonDepsInstaller::new( - package_json_deps_provider.clone(), - npm_api.clone(), - npm_resolution.clone(), - )); - let npm_resolver = Arc::new(ManagedCliNpmResolver::new( - npm_api.clone(), - fs.clone(), - npm_resolution.clone(), - npm_fs_resolver, - None, - package_json_installer, - )) as Arc<dyn CliNpmResolver>; + let npm_resolver = create_cli_npm_resolver( + CliNpmResolverCreateOptions::Managed(CliNpmResolverManagedCreateOptions { + snapshot: CliNpmResolverManagedSnapshotOption::Specified(maybe_snapshot), + maybe_lockfile: None, + fs: fs.clone(), + http_client: http_client.clone(), + npm_global_cache_dir, + cache_setting: CacheSetting::Only, + text_only_progress_bar: progress_bar, + maybe_node_modules_path, + package_json_installer: + CliNpmResolverManagedPackageJsonInstallerOption::ConditionalInstall( + package_json_deps_provider.clone(), + ), + npm_registry_url, + npm_system_info: Default::default(), + }), + ) + .await?; let node_resolver = Arc::new(NodeResolver::new( fs.clone(), npm_resolver.clone().into_npm_resolver(), |