配置参考

下面的参考资料涵盖了 Astro 所有支持的配置选项。要了解更多关于配置 Astro 的信息,请阅读我们的配置 Astro 指南

astro.config.mjs
import { defineConfig } from 'astro/config'

export default defineConfig({
  // 你的配置在这里...
})

类型string
CLI: --root
默认"." (current working directory)

只有当你在项目根目录以外的目录下运行 astro CLI 命令时,你才应该提供该选项。通常,这个选项是通过 CLI 而不是 Astro 配置文件提供的,因为 Astro 需要知道项目根目录才能找到配置文件。

如果提供相对路径(例如:--root: './my-project'),Astro 会根据你当前的工作目录进行解析。

{
  root: './my-project-directory'
}
$ astro build --root ./my-project-directory

类型string
默认"./src"

设置 Astro 将读取网站的目录。

这个值可以是绝对路径,也可以是相对路径。

{
  srcDir: './www'
}

类型string
默认"./public"

设置静态资源目录。这个目录下的文件在开发过程中被提供给 /,在构建过程中被复制到构建目录。这些文件总是按原样提供或复制的,没有转换或捆绑。

这个值可以是绝对路径,也可以是相对路径。

{
  publicDir: './my-custom-publicDir-directory'
}

类型string
默认"./dist"

设置 astro build 将你的最终构建写入的目录。

这个值可以是绝对路径,也可以是相对路径。

{
  outDir: './my-custom-build-directory'
}

类型string

你最终部署的链接。Astro 会使用这个完整的链接来生成网站地图和最终构建的规范链接。强烈建议你设置这个配置项,以获得 Astro 最佳体验。

{
  site: 'https://www.my-site.dev'
}

类型string

你要部署到的基本路径。Astro 在开发过程中会匹配这个路径名,这样你的开发环境就会尽可能地与你的构建环境匹配。在下面的例子中,astro dev 会在 /docs 处启动你的服务器。

{
  base: '/docs'
}

请注意,使用 base 选项后你须要更改所有的链接。在这个例子中,你须要在链接前面添加 /docs/ 前缀。

比如,当你想要使用某张图片时,你须要将 '/someimg.png' 改为 '/docs/someimg.png'

<!-- <img src="/someimg.png">是错误的! -->
<img src="/docs/someimg.png">

类型'always' | 'never' | 'ignore'
默认'ignore'

设置设计服务器的路由匹配行为。从以下选项中选择:

  • 'always' - 只匹配包含尾部斜线的链接(例如:/foo/)。
  • 'never' - 不匹配包含尾部斜线的链接(例如:/foo)。
  • 'ignore'- 匹配链接,不管是否存在尾部的 /

如果你的生产主机对尾部斜杠的工作或不工作有严格的处理方式,请使用该配置选项。

如果你希望自己更严格一些,那么你也可以设置这个选项,这样在开发过程中,无论是否有尾部斜杠的URL都不会工作。

{
  // 示例:在开发过程中要求有尾部斜线
  trailingSlash: 'always'
}

另见

  • build.format

类型AstroIntegration

使用构建适配器将其部署到你最喜爱的服务器、无服务器或边缘主机。导入我们的第一方适配器 Netlify (EN)Vercel,以及更多的适配器来使用Astro SSR。

有关 SSR 的更多信息,请参见我们的服务器端渲染指南,以及我们的部署指南以获得完整的主机列表。

import netlify from '@astrojs/netlify/functions';
{
  // 示例:使用 Netlify 无服务器部署构建
  adapter: netlify(),
}

另见

  • output

类型'static' | 'server'
默认值'static'

指定构建的输出目标。

  • static- 构建静态网站,部署到任何静态主机上。
  • server - 构建应用,部署到支持S SR(服务器端渲染)的主机上。
import { defineConfig } from 'astro/config';

export default defineConfig({
  output: 'static'
})

另见

  • adapter

类型('file' | 'directory')
默认'directory'

控制每个页面的输出文件格式:

  • 如果是’file’,Astro将为每个页面生成一个HTML文件(例如:“/foo.html”)。
  • 如果是’directory’,Astro将为每个页面生成一个有嵌套的index.html文件的目录(例如:“/foo/index.html”)。
{
  build: {
    // 示例:在构建过程中生 成`page.html` 而不是 `page/index.html`。
    format: 'file'
  }
}

设置 build.format 可以控制 Astro.url 在构建过程中被设置成什么。当它是:

  • directory - Astro.url.pathname 将包括一个尾部斜杠,以模仿文件夹行为;例如 /foo/
  • file - Astro.url.pathname 将包括 .html,即/foo.html

这意味着当你使用 new URL('./relative', Astro.url) 创建相对的连接时,开发和构建会得到一致的行为。

定制 Astro 开发服务器,适用于 astro devastro preview

{
  server: { port: 1234, host: true}
}

要根据运行的命令(devpreview)设置不同的配置,也可以向这个配置选项传递函数。

{
  // 示例:使用函数语法,根据命令进行定制
  server: (command) => ({ port: command === 'dev' ? 3000 : 4000 })
}

类型string | boolean
默认false

添加于: v0.24.0

设置服务器应该监听哪些网络 IP 地址(即非本地主机 IP)。

  • false- 不在网络 IP 地址上公开
  • true- 侦听所有地址,包括 LAN 和公开地址
  • [custom-address] - 在 [custom-address] 网络 IP 地址上公开(例如:192.168.0.1)。

类型number
默认3000

设置服务器监听端口。

如果给定的端口已经在使用,Astro 会自动尝试下一个可用的端口。

{
  server: { port: 8080 }
}

类型boolean
默认false

控制 markdown 草稿页是否应该被包含在构建中。

如果 markdown 页面在 frontmatter 中包含 draft: true,那么它就被认为是草稿。在开发过程中会显示草稿页(astro dev),但在默认情况下,它们不会被包含在你的最终构建中。

{
  markdown: {
    // 示例:在你的最终构建中包括所有的草稿
    drafts: true,
  }
}

类型Partial<ShikiConfig>

Shiki 配置选项。使用方法见 markdown 配置文档

类型'shiki' | 'prism' | false
默认shiki

可供使用的语法高亮器:

  • shiki - 使用 Shiki 高亮器
  • prism - 使用 Prism 高亮器
  • false - 不使用语法高亮。
{
  markdown: {
    // 示例:在 Markdown 中使用 prism 进行语法高亮显示
    syntaxHighlight: 'prism',
  }
}

类型RemarkPlugins

通过自定义 Remark 插件来定制 Markdown 构建方式。你可以导入并应用插件函数(推荐),或传递一个值为插件名的字符串。

import remarkToc from 'remark-toc';
{
  markdown: {
    remarkPlugins: [remarkToc]
  }
}

类型RehypePlugins

通过自定义 Rehype 插件 插件来定制对你的 Markdown 输出内容的处理方式。你可以导入并应用插件函数(推荐),或传递一个值为插件名的字符串。

import rehypeMinifyHtml from 'rehype-minify';
{
  markdown: {
    rehypePlugins: [rehypeMinifyHtml]
  }
}

类型:boolean
默认值:false

Astro 默认应用 GitHub-flavored MarkdownSmartypants 插件。当添加你自己的 remark 或 rehype 插件时,你可以通过将 extendDefaultPlugins 标志为 true 来保留这些默认值。

{
  markdown: {
    extendDefaultPlugins: true,
    remarkPlugins: [exampleRemarkPlugin],
    rehypePlugins: [exampleRehypePlugin],
  }
}

类型RemarkRehype

remark-rehype 传递选项。

{
  markdown: {
    // 示例:将脚注文本翻译成另一种语言,这里是默认的英文内容
    remarkRehype: { footnoteLabel: "Footnotes", footnoteBackLabel: "Back to content"},
  },
};

用自定义集成来扩展 Astro 功能。你可以用集成来添加框架支持(如 Solid.js)、新功能(如站点地图)和新库支持(如 Partytown 和 Turbolinks)。

请阅读我们的集成指南,以帮助开始使用Astro集成。

import react from '@astrojs/react';
import tailwind from '@astrojs/tailwind';
{
  // 示例:添加 React + Tailwind 支持
  integrations: [react(), tailwind()]
}

传递额外的配置选项给 Vite。适用于需要使用一些 Astro 不支持的高级配置。

vitejs.dev 上查看完整的 vite 配置对象文档。

{
  vite: {
    ssr: {
      // 示例;如果需要的话,可以强制破坏性包跳过 SSR 处理
      external: ['broken-npm-package'],
    }
  }
}
{
  vite: {
    // 示例:直接在 Astro 项目中添加自定义 Vite 插件
    plugins: [myPlugin()],
  }
}

为了帮助一些用户在 Astro 不同版本之间进行迁移,我们偶尔会引入 legacy 标志。 这些标志允许你在最新的版本中选择使用 Astro 的一些废弃的或其他过时的行为, 这样你就可以继续升级并使用新的 Astro 版本。

类型boolean
默认值false

添加于: v1.0.0-rc.1

启用 Astro pre-v1.0 对 .md Markdown 文件中的组件和 JSX 表达式的支持。 在 Astro 1.0.0-rc 中,默认移除了这种原始的行为,以支持我们新的 MDX集成 (EN)

要启用这一行为,请在 astro.config.mjs 配置文件中将 legacy.astroFlavoredMarkdown 设置为 true

{
  legacy: {
    // 示例:增加对传统 Markdown 功能的支持
    astroFlavoredMarkdown: true,
  },
}