Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

iztro

SylarLong839MIT2.5.1TypeScript support: included

轻量级紫微斗数星盘生成库。可以通过出生年月日获取到紫微斗数星盘信息、生肖、星座等信息。This is a lightweight kit for generating astrolabes for Zi Wei Dou Shu (The Purple Star Astrology), an ancient Chinese astrology. It allows you to obtain your horoscope and personality analysis.

紫微斗數, 紫微斗数, ziweidoushu, astrology, horoscope, ephemeris, zodiac, sign

readme

banner2

一套轻量级紫微斗数排盘工具库

简体中文 🔸 繁體中文 🔸 English

NPM Version NPM Minified Size NPM Downloads jsDelivr Hits

GitHub Code Size in Bytes Codecov Coverage Codecov Status

Maintainability Package Quality

License FOSSA Status

介绍

用于紫微斗数排盘的 JavaScript 开源库,有以下功能:

  • 输入

    • 生日(阳历或农历皆可)
    • 出生时间
    • 性别
  • 可以实现下列功能

    • 紫微斗数 12 宫的星盘数据
    • 获取生肖
    • 获取星座
    • 获取四柱(干支纪年法的生辰)
    • 获取运限(大限、小限、流年、流月、流日、流时)的数据
    • 获取流耀(大限和流年的动态星耀)
    • 判断指定宫位是否存在某些星耀
    • 判断指定宫位三方四正是否存在某些星耀
    • 判断指定宫位三方四正是否存在四化
    • 判断指定星耀是否存在四化
    • 判断指定星耀三方四正是否存在四化
    • 判断指定星耀是否是某个亮度
    • 根据天干获取四化
    • 获取指定星耀所在宫位
    • 获取指定宫位三方四正宫位
    • 获取指定星耀三方四正宫位
    • 获取指定星耀对宫
    • 获取指定运限宫位
    • 获取指定运限宫位的三方四正
    • 判断指定运限宫位内是否存在某些星耀
    • 判断指定运限宫位内是否存在四化
    • 判断指定运限三方四正内是否存在某些星耀
    • 判断指定运限三方四正内是否存在四化
    • 判断指定宫位是否是空宫
    • 判断宫位是否产生飞星到目标宫位
    • 获取宫位产生的四化宫位
  • 其他

    • 多语言输入/输出

      输入的时候支持多个国家和地区语言混合输入,可以输出指定语言。目前支持 简体中文,繁体中文,英文,日文,韩文,越南语。英文的翻译目前还没有标准,所以我大多是意译的,但也正因为如此,可能英文版本的会更加易懂。如果有精通星象翻译的欢迎提 PR 。任何语言都可以。

    • 链式调用

      假如你想判断 紫微星三方四正 有没有 化忌,你可以这样做

      import { astro } from 'iztro';
      
      const astrolabe = astro.bySolar('2000-8-16', 2, '男', true, 'zh-CN');
      
      astrolabe.star('紫微').surroundedPalaces().haveMutagen('忌');
    • 配置和插件

      紫微斗数流派众多,不同的流派的四化以及星耀亮度都会有些许差异,为了满足不同流派的需求和功能的扩展,iztrov2.3.0 版本加入了全局配置和第三方插件功能。详见 配置文档

[!IMPORTANT] 如果你在开发中遇到任何问题,可以添加作者微信咨询。
你也可以任意魔改代码,或联系作者获取技术支持。
WeChat

快捷跳转

直接使用

如果你想要零开发直接查看 iztro 的排盘结果,请直接使用 紫微派(ziwei.pub) 在线排盘。

安装依赖

你可以使用任何你熟悉的包管理库来安装 iztro

# npm
npm install iztro -S

# yarn
yarn add iztro

# pnpm
pnpm install iztro -S

独立 JavaScript 库

假如你使用的是静态 HTML 文件,可以下载 release 资源文件中的 iztro-min-js.tar.gz 压缩包,里面包含了一个 iztro 压缩混淆过的 js 文件和对应的 sourcemap 文件。

v2.0.4+ 版本才提供独立js库。

iztro.min.jsscript 标签引入 HTML 文件使用。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>iztro-紫微斗数开源库</title>
  </head>
  <body>
    <script src="./iztro.min.js"></script>
    <script>
      // 获取一张星盘数据
      var astrolabe = iztro.astro.bySolar('2000-8-16', 2, '男', true, 'zh-CN');
    </script>
  </body>
</html>

当然,我们更推荐你直接使用 CDN 加速链接,你可以在下面列表中选择一个,在没有指定版本号的时候,会自动指向最新发布的版本。

你也可以使用如下规则来指定版本:

因为纯 JS 库没有代码提示和注释,所以在集成的时候请参阅 iztro 开发文档

简单示例

这里是一个简单的例子显示如何调用 iztro 获取到紫微斗数星盘数据,详细文档请移步 开发文档

  • ES6 Module

    import { astro } from 'iztro';
    
    // 通过阳历获取星盘信息
    const astrolabe = astro.bySolar('2000-8-16', 2, '女', true, 'zh-CN');
    
    // 通过农历获取星盘信息
    const astrolabe = astro.byLunar('2000-7-17', 2, '女', false, true, 'zh-CN');
  • CommonJS

    var iztro = require('iztro');
    
    // 通过阳历获取星盘信息
    var astrolabe = iztro.astro.bySolar('2000-8-16', 2, '女', true, 'zh-CN');
    
    // 通过农历获取星盘信息
    var astrolabe = iztro.astro.byLunar('2000-7-17', 2, '女', false, true, 'zh-CN');

贡献

如果你对 iztro 有兴趣,也想加入贡献队伍,我们非常欢迎,你可以用以下方式进行:

  • 如果你对程序功能有什么建议,请到 这里 创建一个 功能需求
  • 如果你发现程序有 BUG,请到 这里 创建一个 BUG 报告
  • 你也可以将本仓库 fork 到你自己的仓库进行编辑,然后提交 PR 到本仓库。
  • 假如你擅长外语,我们也欢迎你对国际化文件的翻译做出你的贡献,你可以 fork 本仓库,然后在 locales 文件夹下创建一个国际化语言文件,然后复制其他语言文件目录里面的文件到你的目录下进行更改。
  • 当然,如果你觉得本程序对你有用,请给我买杯咖啡☕️ Static Badge

[!NOTE] 在开始之前,请阅读 贡献指南

总结

使用本程序返回的数据,你可以生成这样一张星盘,当然这只是一个例子,你可以把注意力集中在星盘的设计上,也可以把重心放在数据的分析上,本程序为你解决了最繁冗的工作,让你可以把精力更多的放在你所需要关注的事情上面。

image

Star 历史

[!IMPORTANT] 如果你觉得代码对你有用,请点 ⭐ 支持,你的 ⭐ 是我持续更新的动力~

Star History Chart

版权

MIT License

Copyright © 2023 All Contributors

FOSSA Status

[!NOTE] 请合理使用本开源代码,禁止用于非法目的。

changelog

紫微斗数

文档地址|Docuemnt

  • ✨ 改进(enhancement)
  • 🪄 功能(feature)
  • 🛠️ 修复(fix)
  • 🧹 琐事(Chore)

v2.5.1

  • 🛠️ 修复(fix)

    🇨🇳

    • 流日/流月宫位在闰月情况下不正确。#242

    🇺🇸

    • horoscope is incorrect when birthday is in lunar leap month. #242

v2.5.0

  • 🪄 功能(feature)

    🇨🇳

    • 支持中州派排盘。#228

    🇺🇸

    • support zhongzhou sect algorithm. #228
  • 🛠️ 修复(fix)

    🇨🇳

    • [v2.4.9]: 流月宫位计算错误 #229

    🇺🇸

    • [v2.4.9]: fix wrong monthly palace index. #229

v2.4.9

  • ✨ 改进(enhancement)

    🇨🇳

    • 新增杂耀龙德星(中州派)。

    🇺🇸

    • add longde as an adjective star.
  • 🛠️ 修复(fix)

    🇨🇳

    • 修复旬空位置错误。

    🇺🇸

    • fix location error for xunkong.

v2.4.8

  • 🛠️ 修复(fix)

    🇨🇳

    • 修复三台、八座位置错误。#227

    🇺🇸

    • fix location error for santai and bazuo stars. #227

v2.4.7

  • 🛠️ 修复(fix)

    🇨🇳

    • 修复插件开发时编译器报错问题。

    🇺🇸

    • fix compiler error during plugin development.

v2.4.6

  • 🛠️ 修复(fix)

    🇨🇳

    • 补充缺失流耀的翻译

    🇺🇸

    • add missed translation for stars.

v2.4.5

  • ✨ 改进(enhancement)

    🇨🇳

    • 新增虚岁分割点配置 #225

    🇺🇸

    • add nominal age divide. #225

v2.4.4

  • 🪄 功能(feature)

    🇨🇳

    • 增加流月、流日、流时的流耀 #210

    🇺🇸

    • add horoscope stars for monthlydailyhourly. #210

v2.4.3

  • 🛠️ 修复(fix)

    🇨🇳

    • 新增运限分界点参数以满足不同需求 #190

    🇺🇸

    • Wrong results using the parameter yearDivide to 'normal'. #190

v2.4.2

  • 🛠️ 修复(fix)

    🇨🇳

    • 更新起大限的规则,使它与全局配置同步

    🇺🇸

    • upgrade decadal setup rule to make it consistent with configuration.

v2.4.1

  • ✨ 改进(enhancement)

    🇨🇳

    • 增加 withOptions 方法

    🇺🇸

    • add withOptions function

v2.4.0

  • ✨ 改进(enhancement)

    🇨🇳

    • 增加年分界点全局配置 #182

    🇺🇸

    • add yearly divider configuration #182

v2.3.2

  • ✨ 改进(enhancement)

    🇨🇳

    • 改进部分英文翻译

    🇺🇸

    • fix some English translations

v2.3.1

  • 🛠️ 修复(fix)

    🇨🇳

    • 修复小限年龄判断条件错误

    🇺🇸

    • fix age error

v2.3.0

  • 🪄 功能(feature)

    🇨🇳

    • 支持全局插件 #165
    • 支持全局配置 #165

    🇺🇸

    • support global plugin #165
    • support global configuration #165

v2.2.3

  • 🛠️ 修复(fix)

    🇨🇳

    • 修复星耀亮度错误 #166

    🇺🇸

    • fix incorrect brightness #166

v2.2.2

  • 🛠️ 修复(fix)

    🇨🇳

    • 来因宫错误 #161

    🇺🇸

    • fix incorrect original palace data #161
  • ✨ 改进(enhancement)

    🇨🇳

    • 更新lunar-lite依赖,以支持更宽的日期参数

    🇺🇸

    • upgrade lunar-lite dependency in order to support wilder date parameter

v2.2.1

  • 🛠️ 修复(fix)

    🇨🇳

    • 小限数据错误 #160

    🇺🇸

    • fix incorrect age scope data #160

v2.2.0

  • 🪄 功能(feature)

    🇨🇳

    • 新增童限指示 #154
    • 新增小限12宫 #157

    🇺🇸

    • add childhood scope indicator #154
    • add 12 palaces for age #157

v2.1.0

  • 🪄 功能(feature)

    🇨🇳

    • 宫位飞星判断 #143

    🇺🇸

    • flyinstar judgement feature #143

v2.0.8

  • 🛠️ 修复(fix)

    🇨🇳

    • 地支繁体错误

    🇺🇸

    • fix typo of Earthly Branch of Chou

v2.0.7

  • 🛠️ 修复(fix)

    🇨🇳

    • 小限顺序错误 #95

    🇺🇸

    • fix incorrect ages #95

v2.0.6

  • 🪄 功能(feature)

    🇨🇳

    • 新增空宫判断 #92

    🇺🇸

    • add empty palace verification #92

v2.0.5

  • ✨ 改进(enhancement)

    🇨🇳

    • 废弃 astrolabeByLunarDateastrolabeBySolarDate 方法
    • 增加umd编译以便支持纯js库CDN调用 #87

    🇺🇸

    • deprecate astrolabeByLunarDate and astrolabeBySolarDate function
    • add UMD lib to support pure js invoking #87

v2.0.4

  • 🛠️ 修复(fix)

    🇨🇳

    • 修复虚岁为0的问题

    🇺🇸

    • fix zero nominal age issue
  • 🪄 功能(feature)

    🇨🇳

    • 增加独立的js库 #84

    🇺🇸

    • add independency js lib #84

v2.0.3

  • ✨ 改进(enhancement)

    🇨🇳

    • 星盘数据中加入性别

    🇺🇸

    • add gender to the astrolabe property

v2.0.2

  • 🛠️ 修复(fix)

    🇨🇳

    • 农历月底晚子时不对 #82

    🇺🇸

    • fix late rat hour issue #82

v2.0.0

  • 🪄 功能(feature)

    🇨🇳

    • 分离日期转换组件 #80

    🇺🇸

    • split calendar component #80

v1.3.5

  • 🛠️ 修复(fix)

    🇨🇳

    • 农历阳历转化错误 #76

    🇺🇸

    • lunar calendar conversion error #76

v1.3.4

  • 🪄 功能(feature)

    🇨🇳

    • 判断运限四化 #74

    🇺🇸

    • check horoscope mutagen state #74
  • ✨ 改进(enhancement)

    🇨🇳

    • 重构代码 #72

    🇺🇸

    • refactor code #72
  • 🛠️ 修复(fix)

    🇨🇳

    • 文曲星亮度丢失

    🇺🇸

    • fix brightness missed issue

v1.3.3

  • 🪄 功能(feature)

    🇨🇳

    • 判断指定运限宫位内是否包含指定流耀中其中一个 #70

    🇺🇸

    • check if one of horoscope stars are in specific palace #70

v1.3.2

  • 🪄 功能(feature)

    🇨🇳

    • 判断指定运限宫位内是否不包含指定流耀 #67

    🇺🇸

    • check if horoscope stars are not in specific palace #67

v1.3.1

  • 🛠️ 修复(fix)

    🇨🇳

    • 天干地支在翻译时会出现译文一样而导致结果错误 #64

    🇺🇸

    • heavenly stem and earthly branch translation issue #64

v1.3.0

  • 🪄 功能(feature)

    🇨🇳

    • 创建FunctionalHoroscope类 #31

    🇺🇸

    • create FunctionalHoroscope class #31

v1.2.7-alpha

  • ✨ 改进(enhancement)

    🇨🇳

    • 使用dayjs提高产品兼容性 #59

    🇺🇸

    • use dayjs to improve compatibility #56

v1.2.6

  • 🪄 功能(features)

    🇨🇳

    • 在流年运限里返回流年神煞 #56

    🇺🇸

    • return yearly decorative stars #56
  • 🛠️ 修复(fix)

    🇨🇳

    • 流月索引错误 #54

    🇺🇸

    • monthly index is incorrect #54

v1.2.5

  • 🛠️ 修复(fix)

    🇨🇳

    • 修复丢失的星耀翻译(ja_JP -> 月德)

    🇺🇸

    • fix missed star translation for (ja_JP -> 月德)

v1.2.4

  • 🪄 功能(feature)

    🇨🇳

    • 新增越南语支持

    🇺🇸

    • support Vietnamese
  • 🛠️ 修复(fix)

    🇨🇳

    • 修复代码风格检查发现的额问题 #42 #43

    🇺🇸

    • fix codestyle issues #42 #43

v1.2.3

  • 🛠️ 修复(fix)

    🇨🇳

    • 修复运限索引计算错误 #36

    🇺🇸

    • fix wrong horoscope indexes #36

v1.2.2

  • ✨ 改进(enhancement)

    🇨🇳

    • 给 Horoscope 添加 name 字段
    • 给 name 字段添加国际化翻译

    🇺🇸

    • add name field to Horoscope
    • add translation for name

v1.2.1

  • 🪄 功能(feature)

    🇨🇳

    • 新增静态方法 #28

      • 通过阳历获取生肖
      • 通过农历获取生肖
      • 通过阳历获取星座
      • 通过农历获取星座
      • 通过阳历获取主星
      • 通过农历获取主星

    🇺🇸

    • add some static methods #28

      • get zodiac by solar date
      • get zodiac by lunar date
      • get sign by solar date
      • get sign by lunar date
      • get major stars by solar date
      • get major stars by lunar date
  • 🛠️ 修复(fix)

    🇨🇳

    • 在特定情况下语言无法设置成功的问题

    🇺🇸

    • failed to set language in some scenarios

v1.2.0

  • ✨ 改进(enhancement)

    🇨🇳

    • 新增 FunctionalSurpalaces
    • 新增 FunctionalStar
    • 废弃 FunctionalAstrolabe 类的下列方法

      • isSurrounded()
      • isSurroundedOneOf()
      • notSurrounded()

    🇺🇸

    • add new class FunctionalSurpalaces
    • add new class FunctionalStar
    • deprecate those functions to FunctionalAstrolabe class

      • isSurrounded()
      • isSurroundedOneOf()
      • notSurrounded()
  • 🪄 功能(feature)

    🇨🇳

    • 实现 #24

    🇺🇸

    • implement #24

v1.1.1

  • 🛠️ 修复(fix)

    🇨🇳

    • 更改错别字

    🇺🇸

    • fix typo

v1.1.0

  • 🪄 功能(feature)

    🇨🇳

    • 实现三方四正宫位功能 #21

    🇺🇸

    • implement surrounded palaces feature #21
  • ✨ 改进(enhancement)

    🇨🇳

    • 支持性别国际化
    • timely修改为hourly
    • 优化types结构,将types.ts拆分进types文件夹内,方便维护

    🇺🇸

    • localization for gender
    • rename timely to hourly
    • optimize the structure of types: split types.ts into several parts and store them into types directory.

v1.0.0

  • 🪄 功能(feature)

    🇨🇳

    • 新增宫位以及星耀分析方法

    🇺🇸

    • add palace and star analyzation function
  • 🛠️ 修复(fix)

    🇨🇳

    • 已知Bug

    🇺🇸

    • fix known bugs

v0.3.2

  • ✨ 改进(enhancement)

    🇨🇳

    • 优化代码,将变量名改为英文,提高兼容性

    🇺🇸

    • code optimization. change the variable names from Chinese to english in order to avoid compatibility issues
  • 🛠️ 修复(fix)

    🇨🇳

    • 翻译错误

    🇺🇸

    • translation error

v0.3.1

  • ✨ 改进(enhancement)

    🇨🇳

    • 完善流耀的翻译

    🇺🇸

    • enhance the translations of horoscope stars
  • 🧹 琐事(Chore)

    🇨🇳

    • 使用eslint替换tslint

    🇺🇸

    • replace tslint to eslint

v0.3.0

  • 🪄 功能(feature)

    🇨🇳

    • 集成i18n,支持国际化 #2

    🇺🇸

    • i18n integration #2

v0.2.1

  • 🪄 功能(feature)

    🇨🇳

    • 实现流时 #3

    🇺🇸

    • implement hourly horoscope #3
  • ✨ 改进(enhancement)

    🇨🇳

    • 优化代码结构
    • 完善注释
    • 增加Release后自动发布到npm的工作流

    🇺🇸

    • code structure optimization
    • comments improvement
    • add a workflow to publish to npm after released

v0.2.0

  • 🛠️ 修复(fix)

    🇨🇳

    • 修复错别字:astrolable --> astrolabe

    🇺🇸

    • fix typo: astrolable --> astrolabe
  • 🪄 功能(feature)

    🇨🇳

    • 实现 #1

    🇺🇸

    • implement #1

v0.1.4

  • 🧹 琐事(Chore)

    🇨🇳

    • 调整package.json里的关键词
    • 修改大限变量名

    🇺🇸

    • modify keywords in package.json
    • change stage to decadal

v0.1.3

  • 🛠️ 修复(fix)

    🇨🇳

    • 年解星放置到流耀里面去
    • 修复错误拼写

    🇺🇸

    • move 年解 to the horoscope star list
    • fix typo
  • ✨ 改进(enhancement)

    🇨🇳

    • 完善ReadMe

    🇺🇸

    • imporove README

v0.1.2

  • ✨ 改进(enhancement)

    🇨🇳

    • 优化注释
    • 优化“性别”类型

    🇺🇸

    • optimize comments
    • optimize Gender type

v0.1.1

  • ✨ 改进(enhancement)

    🇨🇳

    • 增加CHANGELOG

    🇺🇸

    • add CHANGELOG

v0.1.0

  • 🪄 功能(feature)

    🇨🇳

    • 核心功能的实现

    🇺🇸

    • core functions implementation

v0.0.2

  • 🪄 功能(feature)

    🇨🇳

    • 实现工具方法

    🇺🇸

    • util functions implementation
  • ✨ 改进(enhancement)

    🇨🇳

    • 优化代码结构
    • 完善注释

    🇺🇸

    • code structure optimization
    • comments improvement

v0.0.1

  • 🪄 功能(feature)

    🇨🇳

    • 项目初始化
    • 准备依赖数据

    🇺🇸

    • project initialization
    • dependencies preparation