Astro 命令使用指南

本文基于 Astro 4.x 稳定版 整理,覆盖从项目创建、开发调试、生产构建到工具运维的全流程命令,包含参数详解、使用示例、场景速查与常见避坑指南。


一、前置说明

1. 命令执行方式

Astro 命令有两种执行方式:

  • 项目内执行:通过 package.json 脚本调用(推荐),格式为 npm run <脚本名>
  • 直接调用:通过包管理器执行原生 Astro 命令,格式为 npx astro <子命令>(pnpm/yarn/bun 对应写法见下文)

2. 传参规则

通过 npm run 执行脚本时,额外参数必须用 -- 分隔,否则参数会被 npm 自身捕获而非传给 Astro。

# 正确写法
npm run dev -- --port 3000

# 错误写法(参数不生效)
npm run dev --port 3000

pnpm/yarn/bun 兼容上述写法,也支持直接传参(如 pnpm dev --port 3000)。

3. 不同包管理器命令对照表

功能npmpnpmyarnbun
创建项目npm create astro@latestpnpm create astroyarn create astrobun create astro
启动开发服务npm run devpnpm devyarn devbun dev
生产构建npm run buildpnpm buildyarn buildbun build
预览构建产物npm run previewpnpm previewyarn previewbun preview
执行原生命令npx astro <子命令>pnpm astro <子命令>yarn astro <子命令>bunx astro <子命令>

4. 全局通用参数

所有 Astro 子命令都支持以下基础参数:

参数说明
-h, --help显示当前命令的帮助信息与全部参数
-v, --version显示当前项目的 Astro 版本
--verbose输出详细的调试日志,用于排查问题
--silent静默模式,仅输出错误信息

二、项目初始化与创建命令

1. create astro:创建新项目

Astro 官方提供的交互式脚手架,用于快速生成项目模板,是所有 Astro 项目的起点。

基础用法

# 交互式创建(推荐新手)
npm create astro@latest

# 指定项目目录直接创建
npm create astro@latest my-astro-site

常用参数

参数说明
--template <模板名>指定官方模板跳过模板选择步骤,支持 basics blog docs portfolio minimal
--yes, -y跳过所有交互式确认,使用默认配置全自动创建
--install自动安装依赖(默认交互式会询问)
--no-install跳过依赖安装,后续手动执行
--typescript <模式>指定 TypeScript 配置模式:strict(严格)/ strictest(最严格)/ base(基础)
--git自动初始化 Git 仓库
--no-git不初始化 Git 仓库

使用示例

# 1. 一键创建博客模板项目,自动装依赖、初始化Git
npm create astro@latest my-blog -- --template blog --yes --git --install

# 2. 创建最精简的基础项目,不装依赖
npm create astro@latest minimal-site -- --template minimal --no-install

# 3. 创建严格 TypeScript 模式的文档站
npm create astro@latest docs-site -- --template docs --typescript strict

注意事项

  • 官方模板可在 Astro 模板市场 查看,第三方模板需手动克隆
  • 命令末尾的 @latest 确保每次都使用最新版脚手架,避免生成旧版本项目

三、核心开发与运行命令

1. astro dev:启动开发服务器

最常用的开发命令,启动本地热更新开发服务器,支持热模块替换(HMR),代码修改后页面实时刷新,无需手动重启。

基础用法

# package.json 默认脚本
npm run dev

# 原生调用
npx astro dev

常用参数

参数说明
--host <地址>指定服务器监听的主机地址。默认 localhost,设为 0.0.0.0 可让局域网内设备访问
--port <端口号>指定服务端口,默认值为 4321
--open服务启动后自动在系统默认浏览器打开页面
--open <浏览器名>指定浏览器打开,如 --open firefox
--no-port-hopping禁止端口自动跳转。默认端口被占用时会自动寻找下一个可用端口,加此参数则直接报错退出
--base <路径>临时指定站点基础路径,覆盖 astro.config.mjs 中的配置
--site <域名>临时指定站点完整域名,影响绝对路径生成
--drafts显示标记为草稿的内容集合(开发模式默认已开启)
--no-drafts开发模式下隐藏草稿内容

使用示例

# 1. 局域网可访问,端口设为 3000,启动后自动打开
npm run dev -- --host 0.0.0.0 --port 3000 --open

# 2. 固定端口 4321,被占用则直接退出
npm run dev -- --no-port-hopping

# 3. 开发时隐藏草稿文章
npm run dev -- --no-drafts

注意事项

  • 开发模式下代码不做压缩优化,产物保留完整调试信息
  • 环境变量自动加载 .env.env.development 文件
  • 内容集合的 schema 修改后会自动同步类型,无需手动执行同步命令

2. astro build:生产环境构建

将项目编译为可部署的生产产物,默认输出到 dist 目录。静态模式生成纯 HTML/CSS/JS,SSR 模式生成对应适配器的服务端代码。

基础用法

# package.json 默认脚本
npm run build

# 原生调用
npx astro build

常用参数

参数说明
--outDir <路径>指定构建产物输出目录,默认 dist,覆盖配置文件
--site <完整域名>指定站点根域名,如 https://example.com,影响 sitemap、canonical 链接、静态资源绝对路径
--base <路径>指定站点基础路径,用于部署到子目录(如 GitHub Pages 子仓库),例:--base /my-blog/
--drafts构建时包含标记为草稿的内容(生产构建默认排除草稿)
--no-drafts强制排除草稿,覆盖配置文件
--force强制全量重新构建,忽略缓存
--dry-run模拟构建流程,不生成实际文件,用于验证配置

使用示例

# 1. 构建到 output 目录,指定站点域名
npm run build -- --outDir output --site https://www.myblog.com

# 2. 部署到 GitHub Pages 子仓库,指定 base 路径
npm run build -- --base /my-astro-blog/

# 3. 构建包含草稿文章,用于内部预览
npm run build -- --drafts

注意事项

  • 生产构建会自动做代码压缩、资源优化、Tree Shaking,体积远小于开发模式
  • 环境变量自动加载 .env.env.production 文件
  • SSR 模式下产物包含服务端运行代码,不能直接用静态服务器部署,需配合对应适配器
  • 构建失败时加 --verbose 参数可输出详细错误日志,方便排查

3. astro preview:本地预览构建产物

启动一个轻量静态服务器,在本地预览 astro build 生成的生产产物,用于验证构建结果是否符合预期。

基础用法

# package.json 默认脚本
npm run preview

# 原生调用
npx astro preview

常用参数

astro dev 通用核心参数:--host --port --open --base

使用示例

# 预览构建产物,局域网可访问,端口 8080
npm run preview -- --host 0.0.0.0 --port 8080 --open

注意事项

  1. 必须先执行构建preview 仅读取已有构建产物,未执行 astro build 会报错
  2. 仅用于本地预览验证,不能作为生产服务器使用,无性能优化和安全防护
  3. SSR 模式下部分适配器不支持 preview 命令,需按适配器文档本地启动服务
  4. 环境变量加载规则和生产构建一致,读取 .env.production

四、集成与插件管理命令

astro add:一键安装官方集成

Astro 官方提供的集成安装工具,自动完成依赖安装 + 配置文件修改,无需手动编辑 astro.config.mjs,是接入官方生态的首选方式。

基础用法

npx astro add <集成名>

# 跳过交互式确认,全自动安装
npx astro add <集成名> --yes

支持的官方集成分类

分类常用集成名作用
UI 框架react vue svelte preact solid-js lit在 Astro 项目中使用对应框架组件
SSR 适配器node vercel netlify cloudflare deno开启服务端渲染,适配对应部署平台
CSS 工具tailwind一键接入 Tailwind CSS
内容功能mdx sitemap rss支持 MDX、自动生成站点地图、RSS 订阅
性能优化partytown第三方脚本离线执行,优化首屏性能
前端框架alpinejs接入 Alpine.js 交互框架

使用示例

# 1. 接入 React 支持
npx astro add react

# 2. 同时安装 Tailwind 和 MDX,跳过确认
npx astro add tailwind mdx --yes

# 3. 接入 Vercel SSR 适配器
npx astro add vercel

# 4. 生成站点地图和 RSS 订阅
npx astro add sitemap rss

注意事项

  1. @astrojs/ 开头的官方集成支持 astro add,第三方集成需手动安装配置
  2. 集成名支持简写,如 tailwind 会自动对应 @astrojs/tailwind
  3. 执行后会自动备份原配置文件,配置冲突时可手动回滚

五、类型与内容集合命令

1. astro check:全项目类型检查

对整个项目执行 TypeScript 类型校验,包括 .astro 组件、.ts 文件、内容集合 schema,提前发现类型错误,常用于 CI/CD 流水线。

基础用法

npx astro check

常用参数

参数说明
--watch监听文件变化,增量执行类型检查,开发时实时校验
--error-warnings将所有警告视为错误,检查不通过则退出码非 0,适合 CI 严格校验

使用示例

# 1. CI 流水线严格类型校验,警告即失败
npx astro check --error-warnings

# 2. 开发时实时监听类型错误
npx astro check --watch

注意事项

  • 依赖项目根目录的 tsconfig.json,Astro 项目默认自动生成
  • 仅检查类型错误,不校验代码风格,代码规范检查需配合 ESLint
  • 类型检查不通过不影响构建,建议部署前强制校验

2. astro sync:同步内容集合类型

根据 src/content/config.ts 中的 schema 定义,自动生成内容集合的 TypeScript 类型定义,让导入内容时获得完整的类型提示和校验。

基础用法

npx astro sync

常用参数

参数说明
--force强制重新生成类型文件,覆盖旧文件

使用场景

  • 修改了内容集合的 schema 后,IDE 类型提示不更新
  • 导入内容时报类型不存在错误
  • 升级 Astro 大版本后类型异常

注意事项

  • 生成的类型文件存放在项目根目录 .astro 文件夹下,无需手动编辑
  • 开发模式下 Astro 会自动同步类型,绝大多数场景无需手动执行此命令
  • 类型异常时优先执行 --force 强制同步,多数问题可解决

六、工具与辅助命令

1. astro info:输出项目环境信息

打印完整的项目运行环境信息,包括 Astro 版本、Node 版本、操作系统、包管理器、适配器、已安装集成,是排查问题、提交 Issue 时的必备信息。

用法

npx astro info

输出示例

Astro                    v4.16.0
Node                     v20.17.0
System                   macOS (arm64)
Package Manager          pnpm
Output                   static
Adapter                  none
Integrations             @astrojs/tailwind
                         @astrojs/mdx
                         @astrojs/sitemap

2. astro telemetry:遥测数据管理

管理 Astro 的匿名使用数据收集,默认开启。仅收集匿名功能使用数据,不会收集项目代码、内容等隐私信息。

用法

# 查看当前遥测状态
npx astro telemetry status

# 关闭遥测
npx astro telemetry disable

# 开启遥测
npx astro telemetry enable

3. astro preferences:CLI 全局偏好设置

配置 Astro CLI 的全局行为偏好,设置后对所有本地 Astro 项目生效。

常用用法

# 列出所有偏好设置与当前值
npx astro preferences list

# 设置某项偏好
npx astro preferences set <配置项> <值>

# 重置所有偏好为默认值
npx astro preferences reset

常用配置项

配置项说明默认值
dev.portHop端口被占用时是否自动跳转true
cli.color输出是否启用彩色日志true
telemetry.enabled是否启用遥测true

示例

# 全局禁用自动端口跳转
npx astro preferences set dev.portHop false

七、高频场景命令速查表

场景命令
新手创建默认博客项目npm create astro@latest my-blog -- --template blog --yes
日常本地开发npm run dev
给同事分享预览,局域网访问npm run dev -- --host 0.0.0.0
内容集合类型提示异常npx astro sync --force
部署前类型校验npx astro check --error-warnings
生产环境构建npm run build
本地验证构建结果npm run preview
添加 Tailwind CSSnpx astro add tailwind --yes
添加 React 支持npx astro add react --yes
排查问题输出版本信息npx astro info
部署到 GitHub Pages 子仓库npm run build -- --base /仓库名/

八、最佳实践与避坑指南

1. 脚本自定义优化

建议在 package.json 中封装常用参数,避免每次手动输入:

{
  "scripts": {
    "dev": "astro dev --host 0.0.0.0",
    "build": "astro build --site https://your-domain.com",
    "check": "astro check --error-warnings",
    "sync": "astro sync --force"
  }
}

2. CI/CD 标准流程

# 1. 安装依赖(锁定版本)
npm ci

# 2. 类型检查
npx astro check --error-warnings

# 3. 生产构建
npm run build

3. 常见问题排查

  • 命令参数不生效:检查 npm run 后是否加了 -- 分隔符
  • 端口被占用:加 --port 指定其他端口,或用 --no-port-hopping 确认端口占用
  • 环境变量不生效:确认文件名对应运行模式(开发用 .env.development,生产用 .env.production
  • 构建后页面空白:检查 --base 路径是否正确,静态资源路径是否匹配部署环境
  • 类型提示异常:优先执行 npx astro sync --force,再重启 IDE 类型服务

4. 版本升级注意事项

  • 升级 Astro 版本后,建议先执行 npx astro sync --force 同步类型
  • 大版本升级参考官方迁移文档,不要直接跨大版本升级
  • 升级后同步升级所有官方集成,避免版本不兼容