From 8a4e9cd777e49a9371da3bf2d30de88d1e473153 Mon Sep 17 00:00:00 2001 From: Dorseuil Nicolas Date: Sat, 26 Oct 2024 15:29:20 +0200 Subject: [PATCH 1/2] make install deps args optional --- packages/open-next/src/build/installDeps.ts | 17 ++++++++++++----- packages/open-next/src/types/open-next.ts | 13 +++++++++---- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/packages/open-next/src/build/installDeps.ts b/packages/open-next/src/build/installDeps.ts index 634cccc44..547bbc8c4 100644 --- a/packages/open-next/src/build/installDeps.ts +++ b/packages/open-next/src/build/installDeps.ts @@ -23,11 +23,18 @@ export function installDependencies( logger.info(`Installing dependencies for ${name}...`); // We then need to run install in the tempDir // We don't install in the output dir directly because it could contain a package.json, and npm would then try to reinstall not complete deps from tracing the files - const installCommand = `npm install --arch=${ - installOptions.arch ?? "arm64" - } --platform=linux --target=${installOptions.nodeVersion ?? "18"} --libc=${ - installOptions.libc ?? "glibc" - } ${installOptions.packages.join(" ")}`; + const archOption = installOptions.arch + ? `--arch=${installOptions.arch}` + : ""; + const targetOption = installOptions.nodeVersion + ? `--target=${installOptions.nodeVersion}` + : ""; + const libcOption = installOptions.libc + ? `--libc=${installOptions.libc}` + : ""; + + const additionalArgs = installOptions.additionalArgs ?? ""; + const installCommand = `npm install --platform=linux ${archOption} ${targetOption} ${libcOption} ${additionalArgs} ${installOptions.packages.join(" ")}`; execSync(installCommand, { stdio: "pipe", cwd: tempInstallDir, diff --git a/packages/open-next/src/types/open-next.ts b/packages/open-next/src/types/open-next.ts index 385f92e11..5729a8939 100644 --- a/packages/open-next/src/types/open-next.ts +++ b/packages/open-next/src/types/open-next.ts @@ -200,17 +200,22 @@ export interface InstallOptions { */ packages: string[]; /** - * @default "arm64" + * @default undefined */ arch?: "x64" | "arm64"; /** - * @default "18" + * @default undefined */ - nodeVersion?: "18" | "20" | "22"; + nodeVersion?: string; /** - * @default "glibc" + * @default undefined */ libc?: "glibc" | "musl"; + /** + * @default undefined + * Additional arguments to pass to the install command (i.e. npm install) + */ + additionalArgs?: string; } export interface DefaultFunctionOptions< From 262cd3b383816607fde9c9991b50dfc0be177f68 Mon Sep 17 00:00:00 2001 From: Dorseuil Nicolas Date: Sat, 26 Oct 2024 16:30:42 +0200 Subject: [PATCH 2/2] update default for sharp --- packages/open-next/src/build/createImageOptimizationBundle.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/open-next/src/build/createImageOptimizationBundle.ts b/packages/open-next/src/build/createImageOptimizationBundle.ts index 68165be30..3f1045ba2 100644 --- a/packages/open-next/src/build/createImageOptimizationBundle.ts +++ b/packages/open-next/src/build/createImageOptimizationBundle.ts @@ -114,6 +114,9 @@ export async function createImageOptimizationBundle( outputPath, config.imageOptimization?.install ?? { packages: [`sharp@${sharpVersion}`], + arch: "arm64", + nodeVersion: "18", + libc: "glibc", }, ); }