summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.changeset/violet-coats-fail.md5
-rw-r--r--packages/astro/src/cli/add/index.ts4
2 files changed, 7 insertions, 2 deletions
diff --git a/.changeset/violet-coats-fail.md b/.changeset/violet-coats-fail.md
new file mode 100644
index 000000000..0319b363f
--- /dev/null
+++ b/.changeset/violet-coats-fail.md
@@ -0,0 +1,5 @@
+---
+'astro': patch
+---
+
+Fixes `astro add` for packages with only prerelease versions
diff --git a/packages/astro/src/cli/add/index.ts b/packages/astro/src/cli/add/index.ts
index e452f08d6..aa4b4bba8 100644
--- a/packages/astro/src/cli/add/index.ts
+++ b/packages/astro/src/cli/add/index.ts
@@ -691,9 +691,9 @@ async function convertIntegrationsToInstallSpecifiers(
async function resolveRangeToInstallSpecifier(name: string, range: string): Promise<string> {
const versions = await fetchPackageVersions(name);
if (versions instanceof Error) return name;
- // Filter out any prerelease versions
+ // Filter out any prerelease versions, but fallback if there are no stable versions
const stableVersions = versions.filter((v) => !v.includes('-'));
- const maxStable = maxSatisfying(stableVersions, range);
+ const maxStable = maxSatisfying(stableVersions.length !== 0 ? stableVersions : versions, range);
return `${name}@^${maxStable}`;
}