catalog/repos/acquia--nebula.md

88 lines
4.1 KiB
Markdown
Raw Normal View History

2026-04-06 22:24:03 +08:00
# Drupal Canvas 开发模板
`Drupal` `前端开发` `AI辅助开发` `组件库` `模板`
# Nebula
Nebula 提供了一个模板仓库,供 [`@drupal-canvas/create`](https://www.npmjs.com/package/@drupal-canvas/create) 使用,用于脚手架搭建基于 [Drupal Canvas 代码组件](https://project.pages.drupalcode.org/canvas/code-components) 的新代码库。该代码库作为开发环境,已完整配置好工具链和示例,支持 AI 辅助开发工作流。
## 快速开始
无需克隆本仓库,直接通过交互方式创建新项目:
```
npx @drupal-canvas/create@latest
```
## AI 辅助开发
[Agent 技能](https://agentskills.io) 位于 `.agents/skills/` 目录下。
- `nebula-*` 技能提供本仓库特有的约定和工作流。
- `canvas-*` 技能是通用的 Canvas 代码组件指引,安装自 [`drupal-canvas/skills`](https://github.com/drupal-canvas/skills)。
### 配置
以下编码智能体无需任何配置,可直接读取 `.agents/skills/` 目录Amp、Codex、Gemini CLI、GitHub Copilot、Kimi Code CLI、OpenCode。此列表可能很快过时当你看到这里时可能已有更多编码智能体支持该目录。
如果你的编码智能体不支持该目录(例如 Cursor 或 Claude Code请手动将相关技能从 `.agents/skills/` 创建符号链接:
```bash
# 适用于 Claude Code
ln -s .agents/skills/<技能名称> .claude/skills/<技能名称>
# 适用于 Cursor
ln -s .agents/skills/<技能名称> .cursor/skills/<技能名称>
```
### 添加新技能
从 [skills.sh](https://skills.sh) 安装新技能,例如:
```bash
npx skills add vercel-labs/agent-skills
```
### 更新技能
重新添加并选择全部技能,以更新 Drupal Canvas 技能:
```bash
npx skills add drupal-canvas/skills
```
一旦 [vercel-labs/skills#337](https://github.com/vercel-labs/skills/issues/337) 解决后,你将可以使用 `npx skills check``npx skills update` 更高效地检查和应用更新。
## 功能特性
- 已安装 [`@drupal-canvas/create`](https://www.npmjs.com/package/@drupal-canvas/cli)
- 包含针对本代码库的 `.env.example` 文件及使用说明
- 已配置 [`@drupal-canvas/eslint-config`](https://www.npmjs.com/package/@drupal-canvas/eslint-config)
- 在组件在 Drupal Canvas 中正常运行所需的必要校验之上,额外添加了推荐规则
- 使用 [Storybook](https://storybook.js.org) 开发和展示组件
- 已配置 [Viewports](https://storybook.js.org/docs/essentials/viewport) 以匹配 Drupal Canvas 使用的视口尺寸
- 通过 [`@vitejs/plugin-react-swc`](https://www.npmjs.com/package/@vitejs/plugin-react-swc) 使用 [SWC](https://swc.rs) 编译Drupal Canvas 使用 [`@swc/wasm-web`](https://swc.rs/docs/usage/wasm)
- 使用 [Tailwind CSS v4](https://tailwindcss.com) 进行样式开发
- 已配置 [Prettier](https://prettier.io/) 及插件
- [`prettier-plugin-tailwindcss`](https://www.npmjs.com/package/prettier-plugin-tailwindcss)
- [`@ianvs/prettier-plugin-sort-imports`](https://www.npmjs.com/package/@ianvs/prettier-plugin-sort-imports)
- 使用 [Husky](https://typicode.github.io/husky) 配置预提交钩子,通过 [`lint-staged`](https://www.npmjs.com/package/lint-staged) 对暂存文件进行代码检查和格式化
- [GitHub Actions](https://github.com/features/actions) 工作流:
- 静态代码检查
- 根据[约定式提交规范](https://www.conventionalcommits.org/en/v1.0.0)校验 PR 标题(如不需要可删除 `.github/workflows/lint-pr.yml`
- 示例组件
## 命令
| 命令 | 说明 |
| ---- | ---- |
| `npx canvas [命令] [选项]` | 运行 Drupal Canvas CLI 命令 <br>`npx canvas` 列出所有可用命令) |
| `npm run dev` | 启动 Storybook 开发服务器 |
| `npm run storybook` | `dev` 命令的别名 |
| `npm run build-storybook` | 构建静态 Storybook |
| `npm run code:check` | 运行所有代码检查 |
| `npm run code:check:prettier` | 使用 Prettier 检查代码格式 |
| `npm run code:check:eslint` | 使用 ESLint 检查代码 |
| `npm run code:fix` | 运行所有代码修复 |
| `npm run code:fix:prettier` | 使用 Prettier 修复代码格式 |
| `npm run code:fix:eslint` | 使用 ESLint 修复代码 |