@aj-archipelago/merval

中文文档
1.0.7发布于 2025/11/17MITTypeScriptES Module零依赖近 30 天下载 7817

The world's first zero-dependency Mermaid diagram validator. Instant syntax validation without CLI calls or heavy dependencies.

原始使用文档
文档目录16 节
  1. 🎯 Why Merval?
  2. Supported Diagram Types
  3. 📦 Installation
  4. 🚀 Quick Start
  5. Mermaid Version Compatibility
  6. Version Information
  7. Version-Aware Validation
  8. Updating Mermaid Version Compatibility
  9. API
  10. Error Format
  11. 💡 Why Merval?
  12. The Problem with Traditional Mermaid Validation
  13. The Merval Solution
  14. Implementation Strategy
  15. Architecture
  16. License

🌊 Merval

The world's first zero-dependency Mermaid diagram validator. Instant syntax validation without CLI calls or heavy dependencies.

🎯 Why Merval?

Tired of installing @mermaid-js/mermaid-cli and its 400+ dependencies (Puppeteer, Chromium, etc.) just to validate a simple diagram? Merval gives you instant Mermaid syntax validation with zero dependencies.

  • ⚡ Instant: No CLI calls, no external processes
  • 🪶 Zero Dependencies: Pure JavaScript, no Puppeteer, no Chromium
  • 🎯 100% Compatible: Tested against Mermaid CLI v11.12.0
  • 🚀 Lightning Fast: Direct parsing, no rendering overhead
  • 🛡️ Type Safe: Built with TypeScript for robust validation

Supported Diagram Types

  • Flowchart (graph/flowchart)
  • Sequence Diagram
  • Class Diagram
  • State Diagram
  • Entity Relationship Diagram
  • User Journey
  • Gantt Chart
  • Pie Chart
  • Gitgraph
  • Mindmap
  • Timeline
  • xychart-beta (bar/line charts)
  • block-beta (block diagrams)

📦 Installation

# Using npm
npm install @aj-archipelago/merval

# Using yarn  
yarn add @aj-archipelago/merval

# Using pnpm
pnpm add @aj-archipelago/merval

🚀 Quick Start

import { validateMermaid } from '@aj-archipelago/merval';

// Instant validation - no CLI, no dependencies!
const result = validateMermaid(`
graph TD
    A[Start] --> B{Decision}
    B -->|Yes| C[Process A]
    B -->|No| D[Process B]
    C --> E[End]
    D --> E[End]
`);

console.log(result.isValid); // true/false
console.log(result.diagramType); // 'flowchart'
console.log(result.errors); // [] or array of error objects

Mermaid Version Compatibility

This validator is tested against Mermaid CLI v11.12.0 to ensure 100% compatibility. The library tracks which version it was validated against and can warn about potential compatibility issues.

Version Information

import { getMermaidVersionInfo, isMermaidVersionSupported } from '@aj-archipelago/merval';

// Get version compatibility info
const versionInfo = getMermaidVersionInfo();
console.log(versionInfo);
// {
//   validatedAgainst: "11.12.0",
//   lastValidated: "2024-10-15", 
//   cliVersion: "@mermaid-js/[email protected]"
// }

// Check if a specific version is supported
console.log(isMermaidVersionSupported("11.12.0")); // true
console.log(isMermaidVersionSupported("12.0.0"));   // false

Version-Aware Validation

import { validateMermaid } from '@aj-archipelago/merval';

// Basic validation (no version check)
const result = validateMermaid(mermaidCode);

// Validate with version compatibility check
const result = validateMermaid(mermaidCode, "12.0.0");
if (!result.isValid && result.errors.some(e => e.code === 'VERSION_MISMATCH')) {
  console.log('Warning: This validator was not tested against Mermaid 12.0.0');
}

Updating Mermaid Version Compatibility

When updating this validator to work with a new Mermaid version, use the provided script:

# Update to a new Mermaid version
npm run update-version 12.0.0 2024-11-01

# Or manually run the script
node scripts/update-version.js 12.0.0 2024-11-01

This script will:

  1. Update package.json with the new version info
  2. Update src/version.ts with the new version constants
  3. Build the project
  4. Run all tests
  5. Provide next steps for full compatibility testing

API

import { validateMermaid, isValidMermaid, getDiagramType } from '@aj-archipelago/merval';

// Basic validation
const result = validateMermaid(`
graph TD
    A[Start] --> B{Decision}
    B -->|Yes| C[Process A]
    B -->|No| D[Process B]
    C --> E[End]
    D --> E[End]
`);

console.log(result.isValid); // true/false
console.log(result.diagramType); // 'flowchart'
console.log(result.errors); // [] or array of error objects

// Simple boolean validation
const isValid = isValidMermaid(mermaidCode); // true/false

// Get diagram type only
const diagramType = getDiagramType(mermaidCode); // 'flowchart', 'sequence', etc.

// Validation with version compatibility check
const result = validateMermaid(mermaidCode, "12.0.0");
if (!result.isValid && result.errors.some(e => e.code === 'VERSION_MISMATCH')) {
  console.log('Version compatibility warning');
}

Error Format

{
  isValid: false,
  diagramType: 'flowchart',
  errors: [
    {
      line: 2,
      column: 15,
      message: "Missing arrow between nodes",
      code: "MISSING_ARROW",
      suggestion: "Add '-->' to connect nodes"
    }
  ]
}

💡 Why Merval?

The Problem with Traditional Mermaid Validation

# Traditional approach - heavy dependencies
npm install @mermaid-js/mermaid-cli
# Installs 400+ packages including:
# - puppeteer (Chromium browser)
# - canvas, cairo, pango, etc.
# - Native dependencies requiring compilation

The Merval Solution

# Merval - zero dependencies
npm install merval
# Installs only merval - that's it!

Merval gives you the same validation accuracy as Mermaid CLI but with:

  • Zero dependencies - no Puppeteer, no Chromium, no native compilation
  • Instant validation - no CLI process spawning, no file I/O
  • Same accuracy - 100% compatible with Mermaid CLI v11.12.0
  • TypeScript support - full type safety out of the box

Implementation Strategy

  1. Lexical Analysis: Tokenize input into meaningful components
  2. Syntax Analysis: Build AST and validate structure
  3. Semantic Validation: Check relationships and references
  4. Diagram-Specific Rules: Each type has unique validation

Architecture

src/
├── lexer.js          # Tokenize input
├── parser.js         # Parse tokens into AST
├── validators/
│   ├── flowchart.js  # Flowchart-specific validation
│   ├── sequence.js   # Sequence diagram validation
│   ├── xychart.js    # xychart-beta validation
│   └── ...
├── ast/              # AST node definitions
└── index.js          # Main API

License

MIT - Compatible with Mermaid.js MIT license


Built with 💖 by diagram enthusiasts for diagram enthusiasts.

版本与发布记录

@aj-archipelago/merval 共发布 7 个版本,首次发布于 2025/10/16;过去 12 个月发布了 4 个版本。

版本发布日期距今
1.0.7latest2025/11/1711 个月前
1.0.62025/11/1711 个月前
1.0.52025/11/1711 个月前
1.0.42025/11/1211 个月前
1.0.32025/11/031 年前
1.0.22025/10/221 年前

关于 @aj-archipelago/merval 的常见问题

@aj-archipelago/merval 是什么?

The world's first zero-dependency Mermaid diagram validator. Instant syntax validation without CLI calls or heavy dependencies.

如何安装 @aj-archipelago/merval?

在项目目录运行 npm install @aj-archipelago/merval,或使用 pnpm add / yarn add / bun add。

@aj-archipelago/merval 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@aj-archipelago/merval 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@aj-archipelago/merval 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@aj-archipelago/merval 可以商用吗?

@aj-archipelago/merval 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@aj-archipelago/merval 的下载量有多少?

根据 npm 官方下载统计,@aj-archipelago/merval 在 2026/10/05 – 2026/11/03 这 30 天内被下载 7,817 次,日均约 261 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@aj-archipelago/merval 还在维护吗?

最新版本 1.0.7 发布于 2025/11/17(11 个月前);至今共发布 7 个版本,其中过去 12 个月发布了 4 个;首次发布于 2025/10/16。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。