summaryrefslogtreecommitdiff
path: root/cli/standalone
diff options
context:
space:
mode:
Diffstat (limited to 'cli/standalone')
-rw-r--r--cli/standalone/binary.rs23
-rw-r--r--cli/standalone/mod.rs37
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,