diff options
Diffstat (limited to 'cli/standalone')
-rw-r--r-- | cli/standalone/binary.rs | 23 | ||||
-rw-r--r-- | cli/standalone/mod.rs | 37 |
2 files changed, 31 insertions, 29 deletions
diff --git a/cli/standalone/binary.rs b/cli/standalone/binary.rs index b5be2fed3..a2fe7e916 100644 --- a/cli/standalone/binary.rs +++ b/cli/standalone/binary.rs @@ -18,7 +18,6 @@ use deno_core::futures::AsyncSeekExt; use deno_core::serde_json; use deno_core::url::Url; use deno_npm::registry::PackageDepNpmSchemeValueParseError; -use deno_npm::resolution::SerializedNpmResolutionSnapshot; use deno_npm::NpmSystemInfo; use deno_runtime::permissions::PermissionsOptions; use deno_semver::npm::NpmPackageReq; @@ -140,7 +139,6 @@ pub struct Metadata { pub entrypoint: ModuleSpecifier, /// Whether this uses a node_modules directory (true) or the global cache (false). pub node_modules_dir: bool, - pub npm_snapshot: Option<SerializedNpmResolutionSnapshot>, pub package_json_deps: Option<SerializablePackageJsonDeps>, } @@ -475,7 +473,7 @@ impl<'a> DenoCompileBinaryWriter<'a> { &self, writer: &mut impl Write, original_bin: Vec<u8>, - eszip: eszip::EszipV2, + mut eszip: eszip::EszipV2, entrypoint: &ModuleSpecifier, cli_options: &CliOptions, compile_flags: &CompileFlags, @@ -492,14 +490,16 @@ impl<'a> DenoCompileBinaryWriter<'a> { .resolve_import_map(self.file_fetcher) .await? .map(|import_map| (import_map.base_url().clone(), import_map.to_json())); - let (npm_snapshot, npm_vfs, npm_files) = - if self.npm_resolution.has_packages() { - let (root_dir, files) = self.build_vfs()?.into_dir_and_files(); - let snapshot = self.npm_resolution.serialized_snapshot(); - (Some(snapshot), Some(root_dir), files) - } else { - (None, None, Vec::new()) - }; + let (npm_vfs, npm_files) = if self.npm_resolution.has_packages() { + let (root_dir, files) = self.build_vfs()?.into_dir_and_files(); + let snapshot = self + .npm_resolution + .serialized_valid_snapshot_for_system(&self.npm_system_info); + eszip.add_npm_snapshot(snapshot); + (Some(root_dir), files) + } else { + (None, Vec::new()) + }; let metadata = Metadata { argv: compile_flags.args.clone(), @@ -517,7 +517,6 @@ impl<'a> DenoCompileBinaryWriter<'a> { entrypoint: entrypoint.clone(), maybe_import_map, node_modules_dir: self.npm_resolver.node_modules_path().is_some(), - npm_snapshot, package_json_deps: self .package_json_deps_provider .deps() diff --git a/cli/standalone/mod.rs b/cli/standalone/mod.rs index 5536f32fc..bb0bfa8a3 100644 --- a/cli/standalone/mod.rs +++ b/cli/standalone/mod.rs @@ -18,6 +18,7 @@ use crate::npm::create_npm_fs_resolver; use crate::npm::CliNpmRegistryApi; use crate::npm::CliNpmResolver; use crate::npm::NpmCache; +use crate::npm::NpmCacheDir; use crate::npm::NpmResolution; use crate::resolver::MappedSpecifierResolver; use crate::util::progress_bar::ProgressBar; @@ -273,7 +274,7 @@ impl RootCertStoreProvider for StandaloneRootCertStoreProvider { } pub async fn run( - eszip: eszip::EszipV2, + mut eszip: eszip::EszipV2, metadata: Metadata, ) -> Result<(), AnyError> { let main_module = &metadata.entrypoint; @@ -296,26 +297,14 @@ pub async fn run( let root_path = std::env::temp_dir() .join(format!("deno-compile-{}", current_exe_name)) .join("node_modules"); - - let npm_cache = Arc::new(NpmCache::new( - root_path.clone(), - CacheSetting::Use, - 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_cache_dir = NpmCacheDir::new(root_path.clone()); let (fs, vfs_root, node_modules_path, snapshot) = if let Some(snapshot) = - metadata.npm_snapshot + eszip.take_npm_snapshot() { let vfs_root_dir_path = if metadata.node_modules_dir { root_path } else { - npm_cache.registry_folder(&npm_registry_url) + npm_cache_dir.registry_folder(&npm_registry_url) }; let vfs = load_npm_vfs(vfs_root_dir_path.clone()) .context("Failed to load npm vfs.")?; @@ -328,7 +317,7 @@ pub async fn run( Arc::new(DenoCompileFileSystem::new(vfs)) as Arc<dyn deno_fs::FileSystem>, Some(vfs_root_dir_path), node_modules_path, - Some(snapshot.into_valid()?), + Some(snapshot), ) } else { ( @@ -338,6 +327,20 @@ pub async fn run( 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, |