ical-generator

ical-generator is a small piece of code which generates ical calendar files
- Static
- Latest Patch
- Latest Minor
- Latest Major
- 9.0.0
- 8.1.1
- 8.1.0
- 8.0.1
- 8.0.0
- 7.2.0
- 7.1.0
- 7.0.0
- 6.0.1
- 6.0.0
- 5.0.1
- 5.0.0
- 4.1.0
- 4.0.0
- 3.6.1
- 3.6.0
- 3.5.2
- 3.5.1
- 3.5.0
- 3.4.3
- 3.4.2
- 3.4.1
- 3.4.0
- 3.3.0
- 3.2.1
- 3.2.0
- 3.1.1
- 3.1.0
- 3.0.1
- 3.0.0
- 2.2.0
- 2.1.0
- 2.0.0
- 1.15.4
- 1.15.3
- 1.15.2
- 1.15.1
- 1.15.0
- 1.14.0
- 1.13.0
- 1.12.2
- 1.12.1
- 1.12.0
- 1.11.0
- 1.10.0
- 1.9.4
- 1.9.3
- 1.9.2
- 1.9.1
- 1.9.0
- 1.8.3
- 1.8.2
- 1.8.1
- 1.8.0
- 1.7.3
- 1.7.2
- 1.7.1
- 1.7.0
- 1.6.0
- 1.5.0
- 1.4.5
- 1.4.4
- 1.4.3
- 1.4.2
- 1.4.1
- 1.3.1
- 1.3.0
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.1
- 1.1.0
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- 0.2.10
- 0.2.9
- 0.2.8
- 0.2.7
- 0.2.6
- 0.2.5
- 0.2.4
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.10
- 0.1.9
- 0.1.8
- 0.1.7
- 0.1.6
- 0.1.5
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1.0
- 9.0.1-develop.5
- 9.0.1-develop.4
- 9.0.1-develop.3
- 9.0.1-develop.2
- 9.0.1-develop.1
- 9.0.0-develop.8
- 9.0.0-develop.7
- 9.0.0-develop.6
- 9.0.0-develop.5
- 9.0.0-develop.4
- 9.0.0-develop.3
- 9.0.0-develop.2
- 9.0.0-develop.1
- 8.1.2-develop.9
- 8.1.2-develop.8
- 8.1.2-develop.7
- 8.1.2-develop.6
- 8.1.2-develop.5
- 8.1.2-develop.4
- 8.1.2-develop.3
- 8.1.2-develop.2
- 8.1.2-develop.1
- 8.1.1-develop.3
- 8.1.1-develop.2
- 8.1.1-develop.1
- 8.1.0-develop.2
- 8.1.0-develop.1
- 8.0.2-develop.6
- 8.0.2-develop.5
- 8.0.2-develop.4
- 8.0.2-develop.3
- 8.0.2-develop.2
- 8.0.2-develop.1
- 8.0.1-develop.8
- 8.0.1-develop.7
- 8.0.1-develop.6
- 8.0.1-develop.5
- 8.0.1-develop.4
- 8.0.1-develop.3
- 8.0.1-develop.2
- 8.0.1-develop.1
- 8.0.0-develop.1
- 7.2.1-develop.4
- 7.2.1-develop.3
- 7.2.1-develop.2
- 7.2.1-develop.1
- 7.2.0-develop.5
- 7.2.0-develop.4
- 7.2.0-develop.3
- 7.2.0-develop.2
- 7.2.0-develop.1
- 7.1.0-develop.3
- 7.1.0-develop.2
- 7.1.0-develop.1
- 7.0.1-develop.2
- 7.0.1-develop.1
- 7.0.0-develop.6
- 7.0.0-develop.5
- 7.0.0-develop.4
- 7.0.0-develop.3
- 7.0.0-develop.2
- 7.0.0-develop.1
- 6.0.2-develop.13
- 6.0.2-develop.12
- 6.0.2-develop.11
- 6.0.2-develop.10
- 6.0.2-develop.9
- 6.0.2-develop.8
- 6.0.2-develop.7
- 6.0.2-develop.6
- 6.0.2-develop.5
- 6.0.2-develop.4
- 6.0.2-develop.3
- 6.0.2-develop.2
- 6.0.2-develop.1
- 6.0.1-develop.10
- 6.0.1-develop.9
- 6.0.1-develop.8
- 6.0.1-develop.7
- 6.0.1-develop.6
- 6.0.1-develop.5
- 6.0.1-develop.4
- 6.0.1-develop.3
- 6.0.1-develop.2
- 6.0.1-develop.1
- 6.0.0-develop.4
- 6.0.0-develop.2
- 6.0.0-develop.1
- 5.0.2-develop.2
- 5.0.2-develop.1
- 5.0.1-develop.1
- 5.0.0-develop.1
- 4.1.0-develop.3
- 4.1.0-develop.2
- 4.1.0-develop.1
- 4.0.0-develop.2
- 4.0.0-develop.1
- 3.6.2-develop.4
- 3.6.2-develop.3
- 3.6.2-develop.2
- 3.6.2-develop.1
- 3.6.1-develop.3
- 3.6.1-develop.2
- 3.6.1-develop.1
- 3.6.0-develop.1
- 3.5.2-develop.3
- 3.5.2-develop.2
- 3.5.2-develop.1
- 3.5.1-develop.1
- 3.5.0-develop.1
- 3.4.4-develop.8
- 3.4.4-develop.7
- 3.4.4-develop.6
- 3.4.4-develop.5
- 3.4.4-develop.4
- 3.4.4-develop.3
- 3.4.4-develop.2
- 3.4.4-develop.1
- 3.4.3-develop.2
- 3.4.3-develop.1
- 3.4.2-develop.3
- 3.4.2-develop.2
- 3.4.2-develop.1
- 3.4.1-develop.1
- 3.3.0-develop.1
- 3.2.1-develop.1
- 3.2.0-develop.2
- 3.2.0-develop.1
- 3.1.1-develop.1
- 3.1.0-develop.2
- 3.1.0-develop.1
- 3.0.2-develop.2
- 3.0.2-develop.1
- 3.0.1-develop.4
- 3.0.1-develop.3
- 3.0.1-develop.2
- 3.0.1-develop.1
- 3.0.0-develop.8
- 3.0.0-develop.7
- 3.0.0-develop.6
- 3.0.0-develop.5
- 3.0.0-develop.4
- 3.0.0-develop.3
- 3.0.0-develop.2
- 3.0.0-develop.1
- 2.2.0-develop.1
- 2.1.1-develop.1
- 2.1.0-develop.6
- 2.1.0-develop.5
- 2.1.0-develop.4
- 2.1.0-develop.2
- 2.1.0-develop.1
- 2.0.1-develop.3
- 2.0.1-develop.2
- 2.0.1-develop.1
- 2.0.0-develop.22
- 2.0.0-develop.21
- 2.0.0-develop.20
- 2.0.0-develop.19
- 2.0.0-develop.18
- 2.0.0-develop.17
- 2.0.0-develop.16
- 2.0.0-develop.15
- 2.0.0-develop.14
- 2.0.0-develop.13
- 2.0.0-develop.12
- 2.0.0-develop.11
- 2.0.0-develop.10
- 2.0.0-develop.9
- 2.0.0-develop.8
- 2.0.0-develop.7
- 2.0.0-develop.6
- 2.0.0-develop.5
- 2.0.0-develop.4
- 2.0.0-develop.3
- 2.0.0-develop.2
- 2.0.0-develop.1
- 1.3.0-develop.4
- 1.3.0-develop.3
- 1.3.0-develop.2
- 1.3.0-develop.1
- 1.0.5-0
- 1.0.4-0
- 1.0.3-0
- 1.0.2-6
- 1.0.2-5
- 1.0.2-4
- 1.0.2-3
- 1.0.2-2
- 1.0.2-1
- 1.0.1-2
- 1.0.1-1
- 1.0.0-4
- 1.0.0-2
- 1.0.0-1
- 1.0.0-0
- 0.3.0-dev.6
- 0.3.0-dev.5
- 0.3.0-dev.4
- 0.3.0-dev.3
- 0.3.0-dev.2
- 0.3.0-dev.1
- 0.3.0-dev.0
- 0.3.0-dev
- 0.2.4-dev
ical-generator
is a small but fine library with which you can very easily create a valid iCal calendars, for example
to generate subscriptionable calendar feeds.
📦 Installation
npm install ical-generator
⚡️ Quick Start
import ical, { ICalCalendarMethod } from 'ical-generator';
import http from 'node:http';
const calendar = ical({ name: 'my first iCal' });
// A method is required for outlook to display event as an invitation
calendar.method(ICalCalendarMethod.REQUEST);
const startTime = new Date();
const endTime = new Date();
endTime.setHours(startTime.getHours() + 1);
calendar.createEvent({
start: startTime,
end: endTime,
summary: 'Example Event',
description: 'It works ;)',
location: 'my room',
url: 'http://sebbo.net/',
});
http.createServer((req, res) => {
res.writeHead(200, {
'Content-Type': 'text/calendar; charset=utf-8',
'Content-Disposition': 'attachment; filename="calendar.ics"',
});
res.end(calendar.toString());
}).listen(3000, '127.0.0.1', () => {
console.log('Server running at http://127.0.0.1:3000/');
});
See the examples folder for more examples.
📑 API-Reference
🕒 Date, Time & Timezones
ical-generator supports native Date,
Day.js, Luxon's DateTime
and the older moment.js, moment-timezone
objects and TZDate. You can also pass a string which is then passed to javascript's Date
internally.
It is recommended to use UTC time as far as possible. ical-generator
will output all time information as UTC time as
long as no time zone is defined. For day.js, a plugin is necessary for this, which is a prerequisite. If a time zone is
set, ical-generator
assumes that the given time matches the time zone. If a time zone is used, it is also recommended
to use a VTimezone generator. Such a function generates a VTimezone entry and returns it. For example, ical-timezones can
be used for this:
import { ICalCalendar } from 'ical-generator';
import { getVtimezoneComponent } from '@touch4it/ical-timezones';
const cal = new ICalCalendar();
cal.timezone({
name: 'FOO',
generator: getVtimezoneComponent,
});
cal.createEvent({
start: new Date(),
timezone: 'Europe/London',
});
If a moment-timezone
object or Luxon's setZone
method works, ical-generator
sets it according to the time zone set
in the calendar/event.
🚦 Tests
npm test
npm run coverage
🙋 FAQ
Where's the changelog?
It's here. If you need the changelog for
ical-generator
1.x.x and older, you'll find it here.
I get a ReferenceError: TextEncoder is not defined
error (in some browsers)
This library uses TextEncoder
, which
is available in node.js ≥ 11.0.0 and all modern browsers.
Outdated browsers may not have the necessary API and generate this error when generating the calendar.
🙆🏼♂️ Copyright and license
Copyright (c) Sebastian Pekarek under the MIT license.