summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.changeset/green-sloths-switch.md5
-rw-r--r--packages/astro/src/cli/add/index.ts22
2 files changed, 20 insertions, 7 deletions
diff --git a/.changeset/green-sloths-switch.md b/.changeset/green-sloths-switch.md
new file mode 100644
index 000000000..5671a1f69
--- /dev/null
+++ b/.changeset/green-sloths-switch.md
@@ -0,0 +1,5 @@
+---
+'astro': patch
+---
+
+Fixes a bug that caused peer dependency errors when running `astro add tailwind`
diff --git a/packages/astro/src/cli/add/index.ts b/packages/astro/src/cli/add/index.ts
index c3a2e1fe7..d34c60f65 100644
--- a/packages/astro/src/cli/add/index.ts
+++ b/packages/astro/src/cli/add/index.ts
@@ -40,6 +40,7 @@ interface AddOptions {
interface IntegrationInfo {
id: string;
packageName: string;
+ integrationName: string;
dependencies: [name: string, version: string][];
type: 'integration' | 'adapter';
}
@@ -283,7 +284,7 @@ export async function add(names: string[], { flags }: AddOptions) {
'SKIP_FORMAT',
`\n ${magenta(
`Check our deployment docs for ${bold(
- integration.packageName,
+ integration.integrationName,
)} to update your "adapter" config.`,
)}`,
);
@@ -349,7 +350,9 @@ export async function add(names: string[], { flags }: AddOptions) {
case UpdateResult.failure:
case UpdateResult.updated:
case undefined: {
- const list = integrations.map((integration) => ` - ${integration.packageName}`).join('\n');
+ const list = integrations
+ .map((integration) => ` - ${integration.integrationName}`)
+ .join('\n');
logger.info(
'SKIP_FORMAT',
msg.success(
@@ -618,8 +621,7 @@ async function convertIntegrationsToInstallSpecifiers(
integrations: IntegrationInfo[],
): Promise<string[]> {
const ranges: Record<string, string> = {};
- for (let { packageName, dependencies } of integrations) {
- ranges[packageName] = '*';
+ for (let { dependencies } of integrations) {
for (const [name, range] of dependencies) {
ranges[name] = range;
}
@@ -790,7 +792,7 @@ async function validateIntegrations(integrations: string[]): Promise<Integration
const resolvedScope = pkgType === 'first-party' ? '@astrojs' : scope;
const packageName = `${resolvedScope ? `${resolvedScope}/` : ''}${name}`;
-
+ let integrationName = packageName;
let dependencies: IntegrationInfo['dependencies'] = [
[pkgJson['name'], `^${pkgJson['version']}`],
];
@@ -823,13 +825,19 @@ async function validateIntegrations(integrations: string[]): Promise<Integration
}
if (integration === 'tailwind') {
+ integrationName = 'tailwind';
dependencies = [
['@tailwindcss/vite', '^4.0.0'],
['tailwindcss', '^4.0.0'],
];
}
-
- return { id: integration, packageName, dependencies, type: integrationType };
+ return {
+ id: integration,
+ packageName,
+ dependencies,
+ type: integrationType,
+ integrationName,
+ };
}),
);
spinner.success();