diff options
-rw-r--r-- | .changeset/green-sloths-switch.md | 5 | ||||
-rw-r--r-- | packages/astro/src/cli/add/index.ts | 22 |
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(); |