Plugin的开发环境搭建

搭建Plugin开发环境从零开始

一、前置环境准备

1. Node.js 版本要求

Claude Code Plugin 基于 Node.js 运行时构建,官方推荐使用 Node.js 18.x LTS 或更高版本。建议安装最新的 LTS 版本以获得最佳稳定性和兼容性。可以通过以下命令检查当前 Node.js 版本:

node --version npm --version

如果尚未安装 Node.js,建议通过 nvm(Node Version Manager)进行安装,这样可以方便地在不同版本之间切换:

# 安装 nvm(Windows 用户请使用 nvm-windows) curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash # 安装并使用 Node.js LTS 版本 nvm install --lts nvm use --lts

2. 包管理器配置

npm 会随 Node.js 一同安装,但也可以选择使用 yarn 或 pnpm 作为替代包管理器。每种管理器各有优势:npm 为官方默认工具,yarn 在依赖安装速度上更优,pnpm 则在磁盘空间利用上更为高效。建议团队项目统一使用同一种包管理器以避免锁文件冲突。

提示:如果使用 pnpm,需要在项目根目录创建 .npmrc 文件并添加 `shamefully-hoist=true` 配置,以确保所有依赖可以被正确解析。

3. Git 版本控制

Git 是 Plugin 开发中必不可少的版本管理工具。确保已安装 Git 2.30 以上版本,并完成基本配置:

git --version git config --global user.name "Your Name" git config --global user.email "your.email@example.com"

4. 推荐 IDE 和编辑器配置

Visual Studio Code 是开发 Plugin 的首选 IDE,配合以下扩展可以大幅提升开发效率:ESLint(代码规范检查)、Prettier(代码格式化)、JSON Schema 验证插件(用于 manifest.json 智能提示)、npm IntelliSense(包导入自动补全)。建议在 VS Code 设置中开启自动保存和格式化功能。

二、Plugin 脚手架工具

1. 官方脚手架:create-claude-plugin

官方提供了 create-claude-plugin 脚手架工具,可以一键生成完整的 Plugin 项目结构。这是最推荐的方式,因为它会自动配置好所有必要的文件和依赖:

# 使用 npx 运行脚手架(无需全局安装) npx create-claude-plugin my-plugin # 进入项目目录 cd my-plugin # 安装依赖 npm install

脚手架会引导你输入 Plugin 名称、描述、版本号等基本信息,然后自动生成包含完整目录结构和示例代码的项目。

2. 使用 npm init 手动创建

如果希望更灵活地控制项目结构,也可以使用 npm init 手动初始化项目:

mkdir my-plugin cd my-plugin npm init -y

这种方式会生成一个基础的 package.json 文件,后续所有结构和配置都需要手动添加。

3. 手动初始化项目目录

对于需要完全自定义的项目,可以按照以下步骤手动搭建目录结构:创建项目文件夹、编写 package.json(确保 type 字段设为 "module" 以支持 ES Module 语法)、安装核心依赖 @anthropic-ai/claude-code-plugin、添加 TypeScript 配置文件和 ESLint 配置文件。

最佳实践:首次开发 Plugin 时,强烈建议使用官方脚手架 create-claude-plugin。它已经处理好了大部分样板代码和配置,让你可以专注于 Plugin 的核心逻辑开发。熟悉流程后再根据项目需求进行手动定制。

三、开发目录初始化

1. 创建 Plugin 目录结构

一个标准的 Plugin 项目目录结构如下:

my-plugin/ ├── src/ │ ├── index.js # 主入口文件 │ ├── commands/ # 命令模块 │ │ └── hello.js │ └── utils/ # 工具函数 │ └── helper.js ├── manifest.json # Plugin 清单文件 ├── package.json ├── tsconfig.json # 如果使用 TypeScript ├── .gitignore ├── README.md └── tests/ └── index.test.js

2. 编写 manifest.json

manifest.json 是 Plugin 的核心配置文件,用于声明 Plugin 的元信息、功能入口和权限声明。以下是一个标准的 manifest.json 示例:

{ "name": "my-plugin", "version": "1.0.0", "description": "My first Claude Code Plugin", "main": "src/index.js", "commands": [ { "name": "hello", "description": "Say hello from plugin", "handler": "helloCommand" } ], "permissions": { "files": ["read", "write"], "network": false } }

3. 创建主入口文件

主入口文件负责注册 Plugin 的所有命令和功能。以下是一个简单的主入口文件示例:

// src/index.js import { definePlugin } from '@anthropic-ai/claude-code-plugin'; export default definePlugin({ name: 'my-plugin', commands: { helloCommand: async (args, context) => { return { type: 'text', content: `Hello from my-plugin! Args: ${JSON.stringify(args)}` }; } } });

4. 安装开发依赖

根据项目需求安装必要的开发依赖:

# 核心依赖(必需) npm install @anthropic-ai/claude-code-plugin # 开发依赖(推荐) npm install --save-dev eslint prettier jest # TypeScript 支持(可选) npm install --save-dev typescript @types/node
注意:@anthropic-ai/claude-code-plugin 包提供了 Plugin SDK,包含类型定义、工具函数和调试辅助功能。请确保始终使用最新版本。

四、本地加载和测试

1. 使用 npm link 本地链接 Plugin

在开发阶段,可以通过 npm link 将 Plugin 链接到全局,方便 Claude Code 加载和测试:

# 在 Plugin 项目根目录执行 npm link # 验证链接是否成功 npm ls -g --depth=0

2. 在 settings.json 中配置本地路径

Claude Code 通过项目级别的 .claude/settings.json 或全局 settings.json 来加载 Plugin。在其中添加 plugins 配置指向本地 Plugin 路径:

{ "plugins": { "my-plugin": { "path": "C:/Users/YourName/projects/my-plugin" } } }

配置完成后,重启 Claude Code 使配置生效。可以通过 /plugins 命令查看当前已加载的 Plugin 列表,确认你的 Plugin 是否被正确识别。

3. 测试 Plugin 命令是否正常注册

在 Claude Code 中使用以下方法测试 Plugin 是否正常工作:

4. 验证 Plugin 功能

编写单元测试来验证 Plugin 的核心功能。使用 Jest 或 Vitest 编写测试用例:

// tests/index.test.js import { describe, it, expect } from '@jest/globals'; import plugin from '../src/index.js'; describe('My Plugin', () => { it('should register hello command', async () => { const result = await plugin.commands.helloCommand( { name: 'World' }, {} ); expect(result.type).toBe('text'); expect(result.content).toContain('Hello'); }); });
注意事项:本地加载测试时,确保 Plugin 目录路径中不包含中文或特殊字符,避免路径解析问题。如果 Plugin 没有正常加载,请检查 settings.json 的 JSON 格式是否正确,以及 path 字段指向的是否为 Plugin 的根目录(包含 manifest.json 的目录)。

五、调试和热重载

1. 设置调试端口

Claude Code Plugin 支持通过 Node.js 的 inspect 标志进行调试。在启动 Claude Code 时添加调试参数:

# 启动 Claude Code 并开启调试端口 claude --inspect=9229 # 在 Chrome 浏览器中打开 chrome://inspect # 点击 "Open dedicated DevTools for Node" 进行调试

这样就可以在 Chrome DevTools 中设置断点、单步执行和检查变量,极大提升调试效率。

2. 使用 console.log 输出调试信息

在 Plugin 代码中可以使用 console.log 输出调试信息,这些信息会显示在 Claude Code 的日志中:

export default definePlugin({ commands: { helloCommand: async (args, context) => { console.log('[my-plugin] helloCommand called with args:', args); console.log('[my-plugin] context:', JSON.stringify(context, null, 2)); const result = { type: 'text', content: `Hello, ${args.name || 'World'}!` }; console.log('[my-plugin] returning result:', result); return result; } } });

建议在所有关键逻辑路径上都添加日志输出,并加上 Plugin 名前缀以便在日志中区分不同 Plugin 的输出。

3. 热重载配置(nodemon)

开发过程中频繁手动重启会降低效率。可以使用 nodemon 实现文件变更时的自动重载:

# 安装 nodemon npm install --save-dev nodemon # 在 package.json 中添加启动脚本 "scripts": { "dev": "nodemon --watch src --ext js,json --exec 'npm run build'", "build": "node scripts/build.js", "start": "node src/index.js" }

配合 VS Code 的 tasks 功能,可以在保存文件时自动触发重载流程,实现近乎实时的开发反馈循环。

4. 常见开发错误排查

以下是 Plugin 开发中常见的错误及其解决方案:

调试原则:从简到繁逐步排查。首先确认 Plugin 能被 Claude Code 识别(/plugins 命令),然后测试基本命令是否可调用,最后检查具体功能的逻辑正确性。每次修改后都重新加载 Plugin,避免使用缓存的结果进行调试。

六、版本控制和 CI 集成

1. .gitignore 配置建议

合理的 .gitignore 配置可以避免将不必要的文件提交到版本控制系统中:

# 依赖目录 node_modules/ # 构建输出 dist/ build/ out/ # 环境变量 .env .env.local .env.*.local # IDE 配置 .vscode/settings.json .idea/ *.swp *.swo # 操作系统文件 .DS_Store Thumbs.db # 日志文件 *.log npm-debug.log* yarn-debug.log* yarn-error.log* # 测试覆盖率 coverage/

2. 自动化测试集成

在 CI 流程中集成自动化测试,确保 Plugin 质量和稳定性。以下是一个 GitHub Actions 配置示例:

# .github/workflows/ci.yml name: CI on: push: branches: [ main ] pull_request: branches: [ main ] jobs: test: runs-on: ubuntu-latest strategy: matrix: node-version: [18.x, 20.x] steps: - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - run: npm ci - run: npm run lint - run: npm test - run: npm run build

该配置会在每次推送和 PR 时自动运行 lint 检查、单元测试和构建,确保代码质量。建议在 package.json 中配置 lint 和 test 脚本,方便本地和 CI 环境统一调用。

3. 发布前检查清单

在发布 Plugin 到生产环境或公开仓库之前,请逐一检查以下项目:

最佳实践:建议在发布前先在本地环境中完成完整的端到端测试流程,模拟用户使用场景验证所有功能。版本号遵循 semver 语义化版本规范(主版本.次版本.补丁版本),确保版本号变更能够清晰传达变更的兼容性影响。