Skip to content

Jam0731/MingPan

Repository files navigation

命盘 · MingPan

中华传统术数计算引擎
八字 · 紫微斗数 · 六爻 · 梅花易数 · 大六壬 · 奇门遁甲

在线体验 · 快速开始 · API 文档 · 参与贡献


这是什么

MingPan 是一个纯计算的中华传统术数排盘引擎,提供六大术数系统的完整排盘能力:

术数系统 说明 核心能力
八字 (BaZi) 四柱命理,最广泛使用的命理体系 四柱排盘、十神分析、神煞、格局、大运流年
紫微斗数 (Ziwei Doushu) 星曜命理,以宫位和星曜为核心 十二宫位、星曜亮度、四化、大限流年
六爻 (Liuyao) 周易占卜,以铜钱摇卦为基础 纳甲排盘、六亲六神、伏神进退神、旺衰
梅花易数 (Meihua) 邵雍创立的简易占法 时间起卦、数字起卦、互卦变卦、体用分析
大六壬 (Daliuren) 三式之一,以日辰为基础 天地盘、四课、三传、神煞
奇门遁甲 (Qimen Dunjia) 三式之一,古代军事决策术 转盘/飞盘、九宫、八门九星八神、用神分析

不依赖任何外部 API 或数据库 — 所有计算在本地完成,零网络请求。

为什么用它

  • 纯计算:不发请求、不存数据、不联网。你的命盘数据永远不会离开你的机器
  • TypeScript 原生:完整类型定义,IDE 自动补全
  • 双输出格式:结构化 JSON 数据 + 可读 Markdown 文本
  • 农历支持:自动处理农历/公历转换和真太阳时校正
  • 易于扩展:模块化架构,每个术数系统独立可替换

快速开始

安装

npm install mingpan
#
pnpm add mingpan
#
yarn add mingpan

30 秒示例

import { calculateBazi } from 'mingpan';

const result = await calculateBazi({
  year: 1990,
  month: 5,
  day: 15,
  hour: 10,
  gender: 'male',
});

console.log(result.text);   // Markdown 格式的排盘文本
console.log(result.data);   // 结构化 JSON 数据

更多示例

import {
  calculateBazi,     // 八字
  calculateZiwei,    // 紫微斗数
  calculateLiuyao,   // 六爻
  calculateMeihua,   // 梅花易数
  calculateDaliuren, // 大六壬
  calculateQimen,    // 奇门遁甲
} from 'mingpan';

// 八字 — 需要出生年月日时
const bazi = await calculateBazi({
  year: 1990, month: 5, day: 15, hour: 10,
  gender: 'male',
  isLunar: false,  // true 则按农历计算
});

// 紫微斗数 — 需要性别
const ziwei = await calculateZiwei({
  year: 1990, month: 5, day: 15, hour: 10,
  gender: 'male',
});

// 六爻 — 需要 6 个爻值 (6=老阴, 7=少阳, 8=少阴, 9=老阳)
const liuyao = calculateLiuyao({
  yaoValues: [7, 8, 9, 7, 8, 6],
  year: 2024, month: 5, day: 14, hour: 10,
});

// 梅花易数 — 支持时间起卦和数字起卦
const meihuaTime = calculateMeihua({
  method: 'time',
  year: 2024, month: 5, day: 14, hour: 10,
});
const meihuaNum = calculateMeihua({
  method: 'number',
  upperNumber: 3, lowerNumber: 7, yaoNumber: 5,
});

// 大六壬 — 需要节气和干支信息
const daliuren = calculateDaliuren({
  jieqi: '立夏',
  lunarMonth: 4,
  dayGanZhi: '甲辰',
  hourGanZhi: '庚午',
});

// 奇门遁甲 — 支持多种盘式
const qimen = calculateQimen({
  year: 2024, month: 5, day: 14, hour: 10,
  panType: '时盘',     // 时盘 | 日盘 | 月盘 | 年盘
  panStyle: '转盘',    // 转盘 | 飞盘
  zhiRunMethod: 'chaibu', // chaibu | maoshan
});

进阶用法

每个 Service 类也可以直接使用,适合需要更细粒度控制的场景:

import { BaziService } from 'mingpan';

const service = new BaziService();
const result = await service.calculate({
  year: 1990, month: 5, day: 15, hour: 10,
  gender: 'male',
  useLunar: false,
});
// result 包含完整的分析结构,不经过 text 渲染

项目结构

src/
├── index.ts                    # 统一入口,导出所有 calculate* 函数
├── mingpan/
│   ├── core/                   # 基础算法层
│   │   ├── bazi/               # 八字核心:真太阳时、节气计算
│   │   ├── calendar/           # 历法:农历、节气、儒略日
│   │   ├── constants/          # 通用常量:天干地支、方位
│   │   ├── qimen/              # 奇门核心:飞盘规则、转盘规则
│   │   └── ziwei/              # 紫微核心:iztro 适配器、亮度系统
│   ├── services/               # 业务服务层(六大术数)
│   │   ├── bazi/               # 八字:10 个分析器 + 5 个计算器
│   │   ├── ziwei/              # 紫微:10 个计算器 + 宫位转换器
│   │   ├── liuyao/             # 六爻:7 个计算器
│   │   ├── meihua/             # 梅花:4 个计算器
│   │   ├── daliuren/           # 大六壬:4 个计算器
│   │   └── qimen/              # 奇门:12 个计算器
│   ├── output/                 # 文本渲染器
│   ├── shared/                 # 共享类型和日志
│   ├── types/                  # 类型声明
│   └── utils/                  # 工具函数(时间标准化、年龄计算)
└── examples/                   # 使用示例

依赖

用途
iztro 紫微斗数排盘引擎
lunar-javascript 农历/公历转换、干支计算、节气

仅两个运行时依赖,零外部 API 调用。

相关项目

  • 釀玄齋 — 基于 MingPan 构建的在线算命平台,提供 AI 解读功能
  • iztro — 紫微斗数排盘库

许可证

MIT


万事皆有时,玄机须慢酿

About

八字排盘、紫微斗数、六爻、梅花易数、大六壬、奇门遁甲——中华传统术数计算

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors