mirror of
https://github.com/denoland/deno.git
synced 2024-11-25 15:29:32 -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,
|
matches: &mut ArgMatches,
|
||||||
app: Command,
|
app: Command,
|
||||||
) -> clap::error::Result<()> {
|
) -> 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);
|
runtime_args_parse(flags, matches, true, true);
|
||||||
|
|
||||||
flags.code_cache_enabled = !matches.get_flag("no-code-cache");
|
flags.code_cache_enabled = !matches.get_flag("no-code-cache");
|
||||||
|
@ -4264,6 +4311,7 @@ fn run_parse(
|
||||||
flags.argv.extend(script_arg);
|
flags.argv.extend(script_arg);
|
||||||
|
|
||||||
ext_arg_parse(flags, matches);
|
ext_arg_parse(flags, matches);
|
||||||
|
temp_netlify_deno_1_hack(flags, &script);
|
||||||
|
|
||||||
flags.subcommand = DenoSubcommand::Run(RunFlags {
|
flags.subcommand = DenoSubcommand::Run(RunFlags {
|
||||||
script,
|
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