- 起步
- 核心概念
- 教程
- 基础内容
- 内置功能
- 集成
- 操作指南
- 使用指南
- 配置
- 参考
- 社区资源
- 其他
- 为文档做出贡献
- 手动安装 Astro
- 升级到 Astro v4
- 升级到 Astro v3
- 升级到 Astro v2
- Legacy v0.x Upgrade Guide
- 从 Create React App(CRA)迁移
- 关于本教程
- 第一单元:前期准备
- 准备开发环境
- 创建你的第一个 Astro 项目
- 你的第一行 Astro 代码
- 创建在线代码仓库
- 将你的网站部署到网络
- 第二单元:页面
- 创建你的第一个 Astro 页面
- 编写你的第一篇 Markdown 博客文章
- 添加「关于你」的动态内容
- 给你的「关于」页面添加样式
- 应用全局样式
- 第三单元:组件
- 创建一个可重复使用的导航组件
- 创建社交媒体 footer
- 自己动手搭建导航 Header
- 编写你的第一个浏览器脚本
- 第四单元:布局
- 编写你的第一个布局
- 创建并传递数据到博客布局
- 布局结合,两全其美
- 第五单元 - Astro API
- 创建文章存档页
- 生成标签页面
- 编写标签索引页面
- 添加 RSS 订阅源
- 第六单元 - Astro 群岛
- 搭建你的第一个 Astro 岛屿
- 回到干燥的陆地。让你的博客从白天到黑夜,无需岛屿!
- 恭喜你!
- @astrojs/mdx
- 添加阅读时间
- 创建开发者工具栏应用
- @astrojs/alpinejs
- @astrojs/lit
- @astrojs/preact
- @astrojs/react
- @astrojs/solid-js
- @astrojs/svelte
- @astrojs/vue
- @astrojs/cloudflare
- @astrojs/netlify
- @astrojs/node
- @astrojs/vercel
- @astrojs/db
- @astrojs/markdoc
- @astrojs/partytown
- @astrojs/sitemap
- @astrojs/tailwind
- 使用流式处理来提升页面性能
- 从 Gatsby 迁移
- 从 Next.js 迁移
- 从 NuxtJS 迁移
- 从 Docusaurus 迁移到 Astro
- 从 Eleventy 迁移到 Astro
- 从 GitBook 迁移到 Astro
- 从Gridsome迁移到Astro
- 从 Hugo 迁移
- 从 Jekyll 迁移
- 从 Pelican 迁移
- 从 SvelteKit 迁移
- 从VuePress迁移
- 从 WordPress 迁移
- 状态共享
- Storyblok 与 Astro
- Contentful 与 Astro
- ButterCMS & Astro
- Builder.io & Astro
- Cosmic 与 Astro
- DatoCMS 与 Astro
- Front Matter CMS 与 Astro
- Ghost & Astro
- Hashnode & Astro
- Hygraph 与 Astro
- Keystatic & Astro
- Kontent.ai 与 Astro
- 无头模式的 Statamic 与 Astro
- Strapi 与 Astro
- Tina CMS 与 Astro
- Umbraco & Astro
- 无头(headless)模式的 WordPress 与 Astro
- ApostropheCMS 与 Astro
- Caisy & Astro
- CloudCannon与Astro
- Crystallize 与 Astro
- Decap CMS 与 Astro
- Directus 与 Astro
- KeystoneJS 与 Astro
- microCMS & Astro
- Payload CMS 与 Astro
- Prepr CMS & Astro
- Prismic & Astro
- Sanity & Astro
- Sitecore 体验管理器 & Astro
- Spinal & Astro
- 创作内容
- Firebase 与 Astro
- Supabase 与 Astro
- Turso 和 Astro
- Xata 与 Astro
- Appwrite & Astro
- 部署你的 Astro 站点至 Netlify
- 部署你的 Astro 站点至 Vercel
- 如何将你的 Astro 网站部署到 Deno
- 部署你的 Astro 站点至 GitHub Pages
- 部署你的 Astro 站点至 GitLab Pages
- 部署你的 Astro 站点至 Cloudflare Pages
- 将你的 Astro 网站部署到 AWS
- 将你的 Astro 网站通过 Flightcontrol 部署到 AWS
- 将你的 Astro 网站通过 SST 部署到 AWS
- 将你的 Astro 网站部署至 Google Cloud
- 部署你的 Astro 站点至 Google Firebase 托管
- 将你的 Astro 网站部署到 Heroku
- 将你的 Astro 网站部署到 Microsoft Azure
- 部署你的 Astro 站点至 Buddy
- 将你的 Astro 网站部署到 Edgio
- 将你的 Astro 站点部署到 Fly.io
- 将你的 Astro 网站部署到 Render
- 将你的 Astro 网站部署到 Stormkit
- 将你的 Astro 网站部署到 Surge
- 通过 Cleavr 部署你的 Astro 网站
- 将你的 Astro 站点部署到 Kinsta 应用托管
- 将你的 Astro 网站部署到 Space
- 将你的 Astro 站点部署到 Zeabur
- 将你的 Astro 网站部署到 Zerops
- 添加 RSS 摘要
- 安装一个 Vite 或 Rollup 插件
- 构建自定义图像组件
- 使用 API 路由构建表单
- 在 Astro 页面中构建 HTML 表单
- 在 Astro 中使用 Bun
- 调用服务器端点
- 校验验证码
- 用 Docker 来构建你的 Astro 网站
- 动态导入图片
- 为链接添加图标
- 添加 i18n 功能
- 添加最后修改时间
- 在 Astro 组件中共享状态
- 使用 Tailwind Typography 美化渲染后的 Markdown
- Unknown compiler error.
- Astro.redirect is not available in static mode.
- Astro.clientAddress is not available in current adapter.
- Astro.clientAddress cannot be used inside prerendered routes.
- Astro.clientAddress is not available in static mode.
- No static path found for requested path.
- Invalid type returned by Astro page.
- Missing value for client:media directive.
- No matching renderer found.
- No client entrypoint specified in renderer.
- Missing hint on client:only directive.
- Invalid value returned by a getStaticPaths path.
- Invalid entry inside getStaticPath's return value
- Invalid value returned by getStaticPaths.
- getStaticPaths RSS helper is not available anymore.
- Missing params property on getStaticPaths route.
- Invalid value for getStaticPaths route parameter.
- getStaticPaths() function required for dynamic routes.
- Invalid slot name.
- Cannot use Server-side Rendering without an adapter.
- No import found for component.
- Invalid prerender export.
- Invalid component arguments.
- Page number param not found.
- Image missing required "alt" property.
- Error while loading image service.
- Missing image dimensions
- Failed to retrieve remote image dimensions
- Unsupported image format
- Unsupported image conversion
- Prerendered dynamic endpoint has path collision.
- Expected src to be an image.
- Expected image options.
- Cannot set both densities and widths
- Image not found.
- Could not process image metadata.
- Image not found.
- Could not transform image.
- Unable to set response.
- The middleware didn't return a Response.
- The middleware returned something that is not a Response object.
- The endpoint did not return a Response.
- Value assigned to locals is not accepted.
- Astro.response.headers must not be reassigned.
- Can't load the middleware.
- Local images must be imported.
- Astro.glob() used outside of an Astro file.
- Astro.glob() did not match any files.
- A redirect must be given a location with the Location header.
- Invalid dynamic route.
- Could not find Sharp.
- Unknown Vite Error.
- Could not import file.
- Invalid glob pattern.
- Astro couldn't find the correct page to render
- The provided locale does not exist.
- Index page not found.
- You can't use the current function with the current strategy
- Prerendered routes aren't supported when internationalization domains are enabled.
- 启用了手动国际化路由但没有提供中间件。
- Astro can't render the route.
- Unhandled rejection
- i18n Not Enabled
- Route not found.
- Unknown CSS Error
- CSS Syntax Error
- Unknown Markdown Error.
- Failed to parse Markdown frontmatter.
- Invalid frontmatter injection.
- MDX integration missing.
- Unknown configuration error.
- Specified configuration file not found.
- Legacy configuration detected.
- Unknown CLI Error.
- Failed to generate content types.
- Unknown Content Collection Error.
- Content entry frontmatter does not match schema.
- Invalid content entry slug.
- Content Schema should not contain slug.
- Collection does not exist
- Content and data cannot be in same collection.
- Collection contains entries of a different type.
- Data collection entry failed to parse.
- Duplicate content entry slug.
- Actions must be used with server output.
- Unsupported transform in content config.
@astrojs/tailwind
Astro 集成 为你项目中的每一个 .astro
文件和 框架组件 带来 Tailwind 的实用 CSS 类,同时支持 Tailwind 配置文件。
为什么是 Tailwind?
Tailwind 让你直接使用实用类而不是编写 CSS。这些实用类大多与某个 CSS 属性设置一一对应:例如,在一个元素上添加text-lg
,相当于在 CSS 中设置font-size: 1.125rem
。你也许会发现使用这些预定义的实用类更容易编写和维护你的样式!
如果你不喜欢这些预定义的设置,你可以根据你项目的设计要求定制 Tailwind 配置文件。例如,如果你设计中的“大文本”实际上是2rem
,你可以将lg
字体大小设置改为2rem
。
Tailwind 也是为 React、Preact 或 Solid 组件添加样式的不错选择,这些组件不支持组件文件中的 <style>
标签。
注意:一般来说,我们不鼓励在同一个文件中同时使用 Tailwind 和另一种样式方法(例如,样式组件)。
安装
Astro 包含了一个 astro add
命令,用于自动设置官方集成。如果你愿意,可以改为手动安装集成。
在新的终端窗口中运行以下其中一个命令。
- npm
- pnpm
- Yarn
npx astro add tailwind
pnpm astro add tailwind
yarn astro add tailwind
如果你遇到任何问题,请随时在 GitHub 上向我们报告并尝试下面的手动安装步骤。
手动安装
首先,使用你的包管理器安装 @astrojs/tailwind
和 tailwindcss
。
- npm
- pnpm
- Yarn
npm install @astrojs/tailwind tailwindcss
pnpm add @astrojs/tailwind tailwindcss
yarn add @astrojs/tailwind tailwindcss
然后,使用 integrations
属性将集成应用到你的 Astro 配置文件中:
import { defineConfig } from 'astro/config';import tailwind from '@astrojs/tailwind';
export default defineConfig({
// ...
integrations: [tailwind()],
});
然后,在你的项目根目录下创建一个 tailwind.config.mjs
文件。你可以使用以下命令来生成一个基本的配置文件:
- npm
- pnpm
- Yarn
npx tailwindcss init
pnpm dlx tailwindcss init
yarn dlx tailwindcss init
最后,可将如下基本配置添加到你的 tailwind.config.mjs
文件中:
/** @type {import('tailwindcss').Config} */
export default { content: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'],
theme: {
extend: {},
},
plugins: [],
};
使用
当你安装集成后,Tailwind 的实用类应该马上就可以使用了。前往 Tailwind 文档学习如何使用 Tailwind,如果你看到一个你想尝试的实用类,就把它添加到你项目的任何 HTML 元素中去吧!
Autoprefixer 也是在开发模式和生产模式下工作时自动设置的,所以 Tailwind 类将在旧的浏览器中工作。
配置
配置 Tailwind
如果你使用了快速安装,并且每个选项都选是,你会在你项目的根目录下看到一个 tailwind.config.mjs
文件。使用这个文件来修改你的 Tailwind 配置。你可以在 Tailwind 文档中学习如何使用这个文件来定制 Tailwind。
如果没有该文件,你可以在根目录下添加你自己的 tailwind.config.(js|cjs|mjs|ts|mts|cts)
文件,集成将使用其配置。如果你已经在另一个项目中配置了 Tailwind,并想把这些设置带到这个项目中来,这也不错。
配置集成
Astro Tailwind 集成处理 Astro 和 Tailwind 之间的通信,它有自己的设置。在 astro.config.mjs
文件(不是 Tailwind 配置文件)中改变这些,这里是你项目的集成设置所在。
configFile
以前在 @astrojs/tailwind
v3 中被称为 config.path
。请参阅 v4 更改日志 以更新你的配置。
如果你想使用不同的 Tailwind 配置文件,而不是默认的 tailwind.config.(js|cjs|mjs|ts|mts|cts)
,请使用本集成的 configFile
选项指定该文件的位置。如果 configFile
是相对路径,则会相对于当前工作目录解析。
import { defineConfig } from 'astro/config';
import tailwind from '@astrojs/tailwind';
export default defineConfig({
// ...
integrations: [
tailwind({
// 示例:为 Tailwind 配置文件提供一个自定义路径
configFile: './custom-config.mjs',
}),
],
});
applyBaseStyles
以前在 @astrojs/tailwind
v3 中被称为 config.applyBaseStyles
。请参阅 v4 更改日志以更新你的配置。
默认情况下,该集成在你项目的每个页面上都导入一个基本的 base.css
文件。这个基本的 CSS 文件包括三个主要的 @tailwind
指令:
/* 集成的默认注入的 base.css 文件 */
@tailwind base;
@tailwind components;
@tailwind utilities;
要禁用这个默认行为,请将 applyBaseStyles
设置为 false
。如果你需要定义你自己的 base.css
文件(例如包括一个@layer
指令),这可能很有用。如果你不希望 base.css
被导入你的项目的每一个页面,这也很有用。
import { defineConfig } from 'astro/config';
import tailwind from '@astrojs/tailwind';
export default defineConfig({
// ...
integrations: [
tailwind({
// 示例:在每个页面上禁用注入基本的`base.css`导入。
// 如果你需要定义或导入你自己的 "base.css",这很有用。
applyBaseStyles: false,
}),
],
});
你现在可以导入你自己的 base.css
作为本地样式表 。
nesting
设置为 true
以应用 tailwindcss/nesting
PostCSS 插件,这样你就可以在兼容 Tailwind 语法的基础上编写嵌套的 CSS 声明。此选项默认为 false
。
import { defineConfig } from 'astro/config';
import tailwind from '@astrojs/tailwind';
export default defineConfig({
integrations: [
tailwind({
// 示例:允许在 Tailwind 的语法基础上编写嵌套的 CSS 声明
nesting: true,
}),
],
});
例子
- Astro Tailwind Starter 为你提供一个基础的、使用 Tailwind 进行样式设计的可运行项目
- Astro 的主页使用 Tailwind。查看其 Tailwind 配置文件或示例组件
- Astro Ink、Sarissa Blog、Astro Tech Blog和 Creek 主题使用 Tailwind 进行样式设计
- 浏览 GitHub 上的 Astro Tailwind 项目以获得更多的例子!
故障排除
使用 @apply
指令时提示类不存在
当在 Astro、Vue、Svelte 或其他组件集成的 <style>
标签中使用 @apply
指令时,它可能会产生关于你的自定义 Tailwind 类不存在的错误,并导致你的构建失败。
error The `text-special` class does not exist. If `text-special` is a custom class, make sure it is defined within a `@layer` directive.
通过在你的 Tailwind 配置中添加一个插件来定义你的自定义样式来修复它,而不是在全局样式表中使用@layer
指令,添加如下内容:
export default {
// ...
plugins: [
function ({ addComponents, theme }) {
addComponents({
'.btn': {
padding: theme('spacing.4'),
margin: 'auto',
},
});
},
],
};
基于类的修改器不能与 @apply
指令一起工作
某些带有修饰符的 Tailwind 类依赖于跨多个元素的组合类。例如,group-hover:text-gray
编译为 .group:hover .text-gray
。当这与 Astro <style>
标签中的 @apply
指令一起使用时,编译后的样式会从构建输出中删除,因为它们与 .astro
文件中的任何标记不匹配。同样的问题也可能发生在支持范围样式的框架组件中,如 Vue 和 Svelte。
为了解决这个问题,你可以使用内联类来代替:
<p class="text-black group-hover:text-gray">Astro</p>
其他
- 如果你的安装似乎不成功,尝试重新启动开发服务器。
- 如果你编辑并保存了一个文件,但没有看到你的网站有相应的更新,试着刷新页面。
- 如果刷新页面并没有更新你的预览,或者新的安装似乎没有效果,那么就重新启动开发服务器。
如需帮助,请查看 Discord 上的 #support
频道。我们友好的支持小组成员将在这里提供帮助!
你也可以查看我们的 Astro 集成文档,了解更多关于集成的信息。
更多集成
UI 框架
@astrojs/
alpinejs @astrojs/
lit @astrojs/
preact @astrojs/
react @astrojs/
solid-js @astrojs/
svelte @astrojs/
vue
SSR 适配器
其他集成
Recipes如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论