mirror of
https://github.com/denoland/deno.git
synced 2024-11-24 15:19:26 -05:00
chore: @netlify/edge-bundler
workaround until Deno 2.0 (#24532)
Hack for a few months until Deno 2.0. See code for details
This commit is contained in:
parent
4f15aada02
commit
ba63740e7f
6 changed files with 68 additions and 0 deletions
|
@ -4246,6 +4246,53 @@ fn run_parse(
|
|||
matches: &mut ArgMatches,
|
||||
app: Command,
|
||||
) -> clap::error::Result<()> {
|
||||
// todo(dsherret): remove this in Deno 2.0
|
||||
// This is a hack to make https://github.com/netlify/build/pull/5767 work
|
||||
// for old versions of @netlify/edge-bundler with new versions of Deno
|
||||
// where Deno has gotten smarter at resolving config files.
|
||||
//
|
||||
// It's an unfortuante scenario, but Netlify has the version at least
|
||||
// pinned to 1.x in old versions so we can remove this in Deno 2.0 in
|
||||
// a few months.
|
||||
fn temp_netlify_deno_1_hack(flags: &mut Flags, script_arg: &str) {
|
||||
fn is_netlify_edge_bundler_entrypoint(
|
||||
flags: &Flags,
|
||||
script_arg: &str,
|
||||
) -> bool {
|
||||
// based on diff here: https://github.com/netlify/edge-bundler/blame/f1d33b74ca7aeec19a7c2149316d4547a94e43fb/node/config.ts#L85
|
||||
if flags.permissions.allow_read.is_none()
|
||||
|| flags.permissions.allow_write.is_none()
|
||||
|| flags.config_flag != ConfigFlag::Discover
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if !script_arg.contains("@netlify") {
|
||||
return false;
|
||||
}
|
||||
let path = PathBuf::from(script_arg);
|
||||
if !path.ends_with("deno/config.ts") {
|
||||
return false;
|
||||
}
|
||||
let mut found_node_modules = false;
|
||||
for component in path.components().filter_map(|c| c.as_os_str().to_str())
|
||||
{
|
||||
if !found_node_modules {
|
||||
found_node_modules = component == "node_modules";
|
||||
} else {
|
||||
// make this work with pnpm and other package managers
|
||||
if component.contains("@netlify") {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
false
|
||||
}
|
||||
|
||||
if is_netlify_edge_bundler_entrypoint(flags, script_arg) {
|
||||
flags.config_flag = ConfigFlag::Disabled;
|
||||
}
|
||||
}
|
||||
|
||||
runtime_args_parse(flags, matches, true, true);
|
||||
|
||||
flags.code_cache_enabled = !matches.get_flag("no-code-cache");
|
||||
|
@ -4264,6 +4311,7 @@ fn run_parse(
|
|||
flags.argv.extend(script_arg);
|
||||
|
||||
ext_arg_parse(flags, matches);
|
||||
temp_netlify_deno_1_hack(flags, &script);
|
||||
|
||||
flags.subcommand = DenoSubcommand::Run(RunFlags {
|
||||
script,
|
||||
|
|
9
tests/specs/run/netlify_edge_bundler_hack/__test__.jsonc
Normal file
9
tests/specs/run/netlify_edge_bundler_hack/__test__.jsonc
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"args": [
|
||||
"run",
|
||||
"--allow-read",
|
||||
"--allow-write",
|
||||
"node_modules/@netlify/edge-bundler/deno/config.ts"
|
||||
],
|
||||
"output": "main.out"
|
||||
}
|
1
tests/specs/run/netlify_edge_bundler_hack/main.out
Normal file
1
tests/specs/run/netlify_edge_bundler_hack/main.out
Normal file
|
@ -0,0 +1 @@
|
|||
Success
|
1
tests/specs/run/netlify_edge_bundler_hack/node_modules/@netlify/edge-bundler/deno/config.ts
generated
vendored
Normal file
1
tests/specs/run/netlify_edge_bundler_hack/node_modules/@netlify/edge-bundler/deno/config.ts
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
console.log("Success");
|
5
tests/specs/run/netlify_edge_bundler_hack/node_modules/@netlify/edge-bundler/package.json
generated
vendored
Normal file
5
tests/specs/run/netlify_edge_bundler_hack/node_modules/@netlify/edge-bundler/package.json
generated
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"name": "@netlify/edge-bundler",
|
||||
"version": "1.0.0",
|
||||
"exports": "./index.js",
|
||||
}
|
4
tests/specs/run/netlify_edge_bundler_hack/package.json
Normal file
4
tests/specs/run/netlify_edge_bundler_hack/package.json
Normal file
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"name": "my-package",
|
||||
"version": "1.0.0"
|
||||
}
|
Loading…
Reference in a new issue