标准开发流程
6. 标准开发流程
Section titled “6. 标准开发流程”我们推荐使用 package.json
作为元数据的“单一事实来源”,并配合构建脚本来自动生成文件头。
6.1 步骤一: 环境设置
Section titled “6.1 步骤一: 环境设置”mkdir my-script && cd my-scriptpnpm initpnpm add -D typescript @types/node esbuild playwrightpnpm tsc --init
6.2 步骤二: 编写脚本 (src/index.ts
)
Section titled “6.2 步骤二: 编写脚本 (src/index.ts)”import { BrowserContext, Page } from 'playwright';// ... AnbaoContext 类型定义 ...
export interface RunOptions { browser: BrowserContext; page: Page; context: AnbaoContext;}
export async function run({ browser, page, context }: RunOptions) { // ... 业务逻辑 ...}
6.3 步骤三: 定义元数据 (package.json
)
Section titled “6.3 步骤三: 定义元数据 (package.json)”在 package.json
中定义所有脚本元数据。这是推荐的最佳实践。
{ "name": "com.bilibili.video-uploader", "displayName": "Bilibili 视频发布助手", "version": "1.0.1", "author": "Anbao Team", "description": "自动将本地视频发布到 Bilibili 平台。", "tags": ["bilibili", "video", "uploader", "automation"], "keywords": ["bilibili"]}
6.4 步骤四: 创建构建脚本 (build.js
)
Section titled “6.4 步骤四: 创建构建脚本 (build.js)”创建一个 build.js
文件,它将读取 package.json
和 schema.json
(如果存在) 来动态生成元数据块。
const fs = require('fs').promises;const { execSync } = require('child_process');
async function build() { const pkg = JSON.parse(await fs.readFile('package.json', 'utf-8')); const schema = await fs.readFile('schema.json', 'utf-8').catch(() => '');
const banner = `// ==AnbaoScript==// @id ${pkg.name}// @name ${pkg.displayName || pkg.name}// @version ${pkg.version}// @author ${pkg.author}// @description ${pkg.description || ''}// @tags ${(pkg.tags || []).join(', ')}// @keywords ${(pkg.keywords || []).join(', ')}// @engine playwright// @schema${schema.trim().replace(/^/gm, '// ')}// ==/AnbaoScript==`;
execSync( `esbuild src/index.ts --bundle --platform=node --outfile=dist/bundle.js --banner:js="${banner.replace(/\n/g, '\\n')}"`, { stdio: 'inherit' } );}
build().catch(console.error);
6.5 步骤五: 配置并运行构建
Section titled “6.5 步骤五: 配置并运行构建”在 package.json
中添加 build
脚本:
"scripts": { "build": "node build.js"}
然后运行 pnpm build
。
6.6 步骤六: 交付
Section titled “6.6 步骤六: 交付”将最终生成的 dist/bundle.js
文件交付给 Anbao Agent 平台或上传到脚本市场仓库。