mirror of
https://github.com/denoland/deno.git
synced 2025-09-26 12:19:12 +00:00
fix(npm): support resolving npm specifiers not in graph with import.meta.resolve
for resolved packages (#29732)
This commit is contained in:
parent
1f02d34877
commit
3d5ff3cf1c
15 changed files with 297 additions and 130 deletions
|
@ -40,8 +40,6 @@ use crate::graph_container::ModuleGraphContainer;
|
|||
use crate::graph_container::ModuleGraphUpdatePermit;
|
||||
use crate::module_loader::ModuleLoadPreparer;
|
||||
use crate::module_loader::PrepareModuleLoadOptions;
|
||||
use crate::node::CliNodeResolver;
|
||||
use crate::npm::CliNpmResolver;
|
||||
use crate::resolver::CliResolver;
|
||||
use crate::tools::bundle::externals::ExternalsMatcher;
|
||||
|
||||
|
@ -73,8 +71,8 @@ pub async fn bundle(
|
|||
let resolver = factory.resolver().await?.clone();
|
||||
let module_load_preparer = factory.module_load_preparer().await?.clone();
|
||||
let root_permissions = factory.root_permissions_container()?;
|
||||
let npm_resolver = factory.npm_resolver().await?.clone();
|
||||
let node_resolver = factory.node_resolver().await?.clone();
|
||||
let npm_resolver = factory.npm_resolver().await?;
|
||||
let node_resolver = factory.node_resolver().await?;
|
||||
let cli_options = factory.cli_options()?;
|
||||
let module_loader = factory
|
||||
.create_module_loader_factory()
|
||||
|
@ -93,8 +91,6 @@ pub async fn bundle(
|
|||
.await?
|
||||
.clone(),
|
||||
permissions: root_permissions.clone(),
|
||||
npm_resolver: npm_resolver.clone(),
|
||||
node_resolver: node_resolver.clone(),
|
||||
module_loader: module_loader.clone(),
|
||||
externals_matcher: if bundle_flags.external.is_empty() {
|
||||
None
|
||||
|
@ -358,8 +354,6 @@ struct DenoPluginHandler {
|
|||
module_load_preparer: Arc<ModuleLoadPreparer>,
|
||||
module_graph_container: Arc<MainModuleGraphContainer>,
|
||||
permissions: PermissionsContainer,
|
||||
npm_resolver: CliNpmResolver,
|
||||
node_resolver: Arc<CliNodeResolver>,
|
||||
module_loader: Rc<dyn ModuleLoader>,
|
||||
externals_matcher: Option<ExternalsMatcher>,
|
||||
}
|
||||
|
@ -655,21 +649,12 @@ impl DenoPluginHandler {
|
|||
),
|
||||
deno_graph::Module::Wasm(_) => todo!(),
|
||||
deno_graph::Module::Npm(module) => {
|
||||
let package_folder = self
|
||||
.npm_resolver
|
||||
.as_managed()
|
||||
.unwrap() // byonm won't create a Module::Npm
|
||||
.resolve_pkg_folder_from_deno_module(module.nv_reference.nv())?;
|
||||
let path = self
|
||||
.node_resolver
|
||||
.resolve_package_subpath_from_deno_module(
|
||||
&package_folder,
|
||||
module.nv_reference.sub_path(),
|
||||
None,
|
||||
ResolutionMode::Import,
|
||||
NodeResolutionKind::Execution,
|
||||
)?;
|
||||
let url = path.clone().into_url()?;
|
||||
let url = self.resolver.resolve_npm_nv_ref(
|
||||
&module.nv_reference,
|
||||
None,
|
||||
ResolutionMode::Import,
|
||||
NodeResolutionKind::Execution,
|
||||
)?;
|
||||
let (media_type, _charset) =
|
||||
deno_media_type::resolve_media_type_and_charset_from_content_type(
|
||||
&url, None,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue