joi
12
总安装量
12
周安装量
#26584
全站排名
安装命令
npx skills add https://github.com/damusix/skills --skill joi
Agent 安装分布
opencode
12
github-copilot
12
codex
12
kimi-cli
12
gemini-cli
12
amp
12
Skill 文档
Joi
Quick Start
const Joi = require('@hapi/joi');
const schema = Joi.object({
name: Joi.string().min(1).max(100).required(),
age: Joi.number().integer().min(0),
email: Joi.string().email()
});
const { error, value } = schema.validate(input);
Critical Rules
- Schemas are immutable – Every method returns a new schema instance; never mutate
- Validate at boundaries – Use
validate()orattempt()at input boundaries; see validation - Types extend base – All types inherit from
any(); see types overview - Refs for cross-field – Use
Joi.ref()for dynamic values across fields; see references - Extend for custom types – Use
Joi.extend()to create custom types; see extensions
Workflow
- Choose a type – types overview for all built-in types
- Add constraints – Chain rules like
.min(),.max(),.pattern(),.valid() - Compose schemas – Nest
Joi.object(),Joi.array(),Joi.alternatives() - Add conditionals – Use
.when()for dynamic schemas; see conditionals - Customize errors – Override messages via
.messages()or.error(); see errors
Key Patterns
| Topic | Reference |
|---|---|
| All built-in types | types |
| Validation & options | validation |
| References & templates | references |
| Conditional schemas | conditionals |
| Error handling | errors |
| Custom extensions | extensions |
| Metadata & introspection | metadata |
| Common methods (any) | any |
| Testing patterns | testing |