ical.js - iCalendar、jCal、vCard和jCard的JavaScript解析器
这是一个用于解析以下RFC及其扩展中定义的格式的库:
最初的目标是在Mozilla日历项目中用它替代libical,但该库在设计时考虑了Web应用。这个库使您能够用日历数据和Web进行各种有趣的实验。这里的大多数算法都来自libical。如果您正在修复这个库的bug,请检查是否可以将修复上游到libical。
沙盒和验证器
如果您想立即试用ICAL.js,这里有一个准备好的jsfiddle。
ICAL验证器演示了如何在网页中使用该库,并帮助验证iCalendar和jCal。在线试用验证器
重复测试器根据RRULE计算事件发生。它可用于帮助创建重复迭代器的测试用例。 在线试用重复测试器。
安装
ICAL.js没有依赖项,并且使用现代JavaScript编写。如果您想在Node.js中使用它,可以通过npm安装ICAL.js:
npm install ical.js
然后直接导入使用:
import ICAL from "ical.js";
如果您使用浏览器,请注意这是一个ES6模块:
<script type="module">
import ICAL from "https://unpkg.com/ical.js/dist/ical.min.js";
document.querySelector("button").addEventListener("click", () => {
ICAL.parse(document.getElementById("txt").value);
});
</script>
如果您需要使用script标签,可以使用转译后的ES5版本:
<script src="https://unpkg.com/ical.js/dist/ical.es5.min.cjs"></script>
<textarea id="txt"></textarea>
<button onclick="ICAL.parse(document.getElementById('txt').value)"></button>
上面的浏览器示例使用了库的压缩版本,这可能是您想要的。 但是,unpkg上也提供了ICAL.js的未压缩版本。
- 未压缩ES6模块:
https://unpkg.com/ical.js/dist/ical.js
- 未压缩ES5版本:
https://unpkg.com/ical.js/dist/ical.es5.cjs
时区
原始的ical.js不注册任何时区,因为这会增加额外的大小。如果您想进行时区转换,并且相应的ics文件中不包含时区定义,您需要使用ical.timezones.js
或其压缩版本。
该文件不包含在发行版中,因为它引入了可能会定期更改的IANA时区。请参阅github actions中关于在CI期间构建自己的时区的内容,或从main分支获取最新构建。
文档
有关包含代码示例的一些指南,请查看wiki。如果您喜欢, 完整的API文档可在此处获得。 如果您发现有任何遗漏,请随时创建问题。
开发
要为ICAL.js做出贡献,您需要设置开发环境。简单的npm install
就能让您准备就绪。如果您想提供帮助并希望讨论任何API更改,请随时创建问题。
测试
以下测试套件可用
npm run test-unit # Node单元测试
npm run test-acceptance # Node验收测试
npm run test-performance # 性能比较测试
npm run test-browser # 浏览器单元和验收测试
npm run test # Node单元和验收测试(这是快速的,涵盖了大多数方面)
npm run test-all # 以上所有测试
有关更多详细信息,请参阅wiki。
代码覆盖率会自动为Node单元测试生成。您可以在线查看覆盖率结果,或在本地运行它们以确保新代码得到覆盖。
代码检查
为确保所有ICAL.js代码使用统一的样式,请使用npm run lint
运行代码检查器。
在发送拉取请求之前,请确保修复此命令显示的任何问题。
文档
您可以在本地生成文档,这也有助于确保您编写的jsdoc是有效的。要这样做,请运行npm run jsdoc
。您可以在docs/api/
子目录中找到输出。
打包
完成工作后,您可以运行npm run build
来创建用于浏览器的单文件构建,包括其压缩版本和源映射。
许可证
ical.js根据Mozilla公共许可证2.0版授权。