Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 1 addition & 10 deletions cli/factory.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1118,15 +1118,6 @@ impl CliFactory {
.node_conditions()
.iter()
.map(|c| Cow::Owned(c.clone()))
.chain({
match &self.flags.subcommand {
DenoSubcommand::Bundle(BundleFlags {
platform: BundlePlatform::Browser,
..
}) => vec![Cow::Borrowed("browser")],
_ => vec![],
}
})
.collect(),
import_conditions_override: None,
require_conditions_override: None,
Expand All @@ -1141,7 +1132,7 @@ impl CliFactory {
self.flags.subcommand,
DenoSubcommand::Bundle(_)
),
prefer_browser_field: matches!(
is_browser_platform: matches!(
self.flags.subcommand,
DenoSubcommand::Bundle(BundleFlags {
platform: BundlePlatform::Browser,
Expand Down
2 changes: 1 addition & 1 deletion cli/lsp/resolver.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1142,7 +1142,7 @@ impl<'a> ResolverFactory<'a> {
.unwrap(),
),
bundle_mode: false, // will change if we add support for moduleResolution bundler
prefer_browser_field: false,
is_browser_platform: false,
},
)))
})
Expand Down
36 changes: 29 additions & 7 deletions libs/node_resolver/resolution.rs
Original file line number Diff line number Diff line change
Expand Up @@ -95,12 +95,12 @@ impl ConditionResolver {
override_default: Option<Vec<Cow<'static, str>>>,
default_conditions: &'static [Cow<'static, str>],
) -> Cow<'static, [Cow<'static, str>]> {
let default_conditions = override_default
.map(Cow::Owned)
.unwrap_or(Cow::Borrowed(default_conditions));
if user_conditions.is_empty() {
Cow::Borrowed(default_conditions)
default_conditions
} else {
let default_conditions = override_default
.map(Cow::Owned)
.unwrap_or(Cow::Borrowed(default_conditions));
let mut new =
Vec::with_capacity(user_conditions.len() + default_conditions.len());
let mut append =
Expand Down Expand Up @@ -243,7 +243,7 @@ enum ResolvedMethod {
#[derive(Debug, Default, Clone)]
pub struct NodeResolverOptions {
pub conditions: NodeConditionOptions,
pub prefer_browser_field: bool,
pub is_browser_platform: bool,
pub bundle_mode: bool,
/// TypeScript version to use for typesVersions resolution and
/// `types@req` exports resolution.
Expand Down Expand Up @@ -318,10 +318,32 @@ impl<
npm_pkg_folder_resolver,
pkg_json_resolver,
sys,
condition_resolver: ConditionResolver::new(options.conditions),
condition_resolver: ConditionResolver::new(NodeConditionOptions {
conditions: options.conditions.conditions,
import_conditions_override: options
.conditions
.import_conditions_override
.or_else(|| {
if options.is_browser_platform {
Some(vec![Cow::Borrowed("browser"), Cow::Borrowed("import")])
} else {
None
}
}),
require_conditions_override: options
.conditions
.require_conditions_override
.or_else(|| {
if options.is_browser_platform {
Some(vec![Cow::Borrowed("browser"), Cow::Borrowed("require")])
} else {
None
}
}),
}),
resolution_config: ResolutionConfig {
bundle_mode: options.bundle_mode,
prefer_browser_field: options.prefer_browser_field,
prefer_browser_field: options.is_browser_platform,
typescript_version: options.typescript_version,
},
}
Expand Down
12 changes: 12 additions & 0 deletions tests/specs/bundle/browser_platform_exports/__test__.jsonc
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"tests": {
"browser": {
"args": "bundle --quiet --platform=browser main.ts",
"output": "browser.out"
},
"node": {
"args": "bundle --quiet main.ts",
"output": "node.out"
}
}
}
5 changes: 5 additions & 0 deletions tests/specs/bundle/browser_platform_exports/browser.out
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// node_modules/package/browser.js
var browser_default = "browser";

// main.ts
console.log(browser_default, browser_default);
4 changes: 4 additions & 0 deletions tests/specs/bundle/browser_platform_exports/main.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import value1 from "package";
import value2 from "package/browser";

console.log(value1, value2);
5 changes: 5 additions & 0 deletions tests/specs/bundle/browser_platform_exports/node.out
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// node_modules/package/node.js
var node_default = "node";

// main.ts
console.log(node_default, node_default);

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions tests/specs/bundle/browser_platform_exports/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
{
}