mirror of
https://github.com/denoland/deno.git
synced 2025-08-03 18:38:33 +00:00
feat: support npm specifiers in deno info
for display text output only (#16470)
This commit is contained in:
parent
2c674dcd20
commit
edaceecec7
24 changed files with 591 additions and 556 deletions
|
@ -697,6 +697,13 @@ impl NpmResolution {
|
|||
Ok(snapshot)
|
||||
}
|
||||
|
||||
pub fn resolve_package_from_id(
|
||||
&self,
|
||||
id: &NpmPackageId,
|
||||
) -> Option<NpmResolutionPackage> {
|
||||
self.snapshot.read().package_from_id(id).cloned()
|
||||
}
|
||||
|
||||
pub fn resolve_package_from_package(
|
||||
&self,
|
||||
name: &str,
|
||||
|
|
|
@ -15,6 +15,7 @@ use crate::lockfile::Lockfile;
|
|||
use crate::npm::cache::should_sync_download;
|
||||
use crate::npm::resolution::NpmResolutionSnapshot;
|
||||
use crate::npm::NpmCache;
|
||||
use crate::npm::NpmPackageId;
|
||||
use crate::npm::NpmPackageReq;
|
||||
use crate::npm::NpmResolutionPackage;
|
||||
|
||||
|
@ -36,6 +37,8 @@ pub trait InnerNpmPackageResolver: Send + Sync {
|
|||
specifier: &ModuleSpecifier,
|
||||
) -> Result<PathBuf, AnyError>;
|
||||
|
||||
fn package_size(&self, package_id: &NpmPackageId) -> Result<u64, AnyError>;
|
||||
|
||||
fn has_packages(&self) -> bool;
|
||||
|
||||
fn add_package_reqs(
|
||||
|
|
|
@ -15,6 +15,7 @@ use deno_core::url::Url;
|
|||
use deno_runtime::deno_node::PackageJson;
|
||||
use deno_runtime::deno_node::TYPES_CONDITIONS;
|
||||
|
||||
use crate::fs_util;
|
||||
use crate::lockfile::Lockfile;
|
||||
use crate::npm::resolution::NpmResolution;
|
||||
use crate::npm::resolution::NpmResolutionSnapshot;
|
||||
|
@ -110,6 +111,11 @@ impl InnerNpmPackageResolver for GlobalNpmPackageResolver {
|
|||
Ok(self.package_folder(&pkg_id))
|
||||
}
|
||||
|
||||
fn package_size(&self, package_id: &NpmPackageId) -> Result<u64, AnyError> {
|
||||
let package_folder = self.package_folder(package_id);
|
||||
Ok(fs_util::dir_size(&package_folder)?)
|
||||
}
|
||||
|
||||
fn has_packages(&self) -> bool {
|
||||
self.resolution.has_packages()
|
||||
}
|
||||
|
|
|
@ -177,6 +177,22 @@ impl InnerNpmPackageResolver for LocalNpmPackageResolver {
|
|||
Ok(package_root_path)
|
||||
}
|
||||
|
||||
fn package_size(&self, package_id: &NpmPackageId) -> Result<u64, AnyError> {
|
||||
match self.resolution.resolve_package_from_id(package_id) {
|
||||
Some(package) => Ok(fs_util::dir_size(
|
||||
// package is stored at:
|
||||
// node_modules/.deno/<package_id>/node_modules/<package_name>
|
||||
&self
|
||||
.root_node_modules_path
|
||||
.join(".deno")
|
||||
.join(package.id.to_string())
|
||||
.join("node_modules")
|
||||
.join(package.id.name),
|
||||
)?),
|
||||
None => bail!("Could not find package folder for '{}'", package_id),
|
||||
}
|
||||
}
|
||||
|
||||
fn has_packages(&self) -> bool {
|
||||
self.resolution.has_packages()
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@ use crate::lockfile::Lockfile;
|
|||
use self::common::InnerNpmPackageResolver;
|
||||
use self::local::LocalNpmPackageResolver;
|
||||
use super::NpmCache;
|
||||
use super::NpmPackageId;
|
||||
use super::NpmPackageReq;
|
||||
use super::NpmRegistryApi;
|
||||
use super::NpmResolutionSnapshot;
|
||||
|
@ -212,6 +213,14 @@ impl NpmPackageResolver {
|
|||
Ok(path)
|
||||
}
|
||||
|
||||
/// Attempts to get the package size in bytes.
|
||||
pub fn package_size(
|
||||
&self,
|
||||
package_id: &NpmPackageId,
|
||||
) -> Result<u64, AnyError> {
|
||||
self.inner.package_size(package_id)
|
||||
}
|
||||
|
||||
/// Gets if the provided specifier is in an npm package.
|
||||
pub fn in_npm_package(&self, specifier: &ModuleSpecifier) -> bool {
|
||||
self
|
||||
|
@ -301,10 +310,14 @@ impl NpmPackageResolver {
|
|||
self.unstable,
|
||||
self.no_npm,
|
||||
self.local_node_modules_path.clone(),
|
||||
Some(self.inner.snapshot()),
|
||||
Some(self.snapshot()),
|
||||
)
|
||||
}
|
||||
|
||||
pub fn snapshot(&self) -> NpmResolutionSnapshot {
|
||||
self.inner.snapshot()
|
||||
}
|
||||
|
||||
pub fn lock(&self, lockfile: &mut Lockfile) -> Result<(), AnyError> {
|
||||
self.inner.lock(lockfile)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue