Coder Social home page Coder Social logo

ical-generator's Introduction



ical-generator

MIT License Module Size CI Status Dependency Status


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

# For TypeScript Users
# (see "I use Typescript and get TS2307: Cannot find module errors" section below)
npm i -D @types/node rrule moment-timezone moment dayjs @types/luxon

โšก๏ธ Quick Start

import ical from 'ical-generator';
import http from 'http';

const calendar = ical({name: 'my first iCal'});
calendar.createEvent({
    start: moment(),
    end: moment().add(1, 'hour'),
    summary: 'Example Event',
    description: 'It works ;)',
    location: 'my room',
    url: 'http://sebbo.net/'
});

http.createServer((req, res) => calendar.serve(res))
    .listen(3000, '127.0.0.1', () => {
        console.log('Server running at http://127.0.0.1:3000/');
    });

๐Ÿ“‘ API-Reference

๐Ÿ•’ Date, Time & Timezones

ical-generator supports native Date, moment.js (and moment-timezone, Day.js and Luxon's DateTime objects. 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 ical 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
npm run browser-test

๐Ÿ™‹ FAQ

What's Error: Can't resolve 'fs'?

ical-generator uses the node.js fs module to save your calendar on the filesystem. In browser environments, you usually don't need this, so if you pass null for fs in your bundler. In webpack this looks like this:

{
  "resolve": {
    "fallback": {
      "fs": false
    }
  }
}

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 use Typescript and get TS2307: Cannot find module errors

ical-generator supports some third-party libraries such as moment.js or Day.js. To enable Typescript to do something with these types, they must of course also be installed. Unfortunately, npm does not install optional peerDependencies. Because these modules are not necessary for JavaScript users, I have marked these modules as optional. So if you use Typescript, you need the following modules to build the code that uses ical-calendar:

npm i -D @types/node rrule moment-timezone moment dayjs @types/luxon

For JavaScript users they are not necessary.

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.

ical-generator's People

Contributors

1000i100 avatar b123400 avatar dependabot[bot] avatar depfu[bot] avatar ellell avatar evelynhathaway avatar fratzinger avatar github-actions[bot] avatar heikotheissen avatar irfaan avatar janrg avatar joelmukuthu avatar jysperm avatar kesla avatar kkozlik avatar lucasfischer avatar matthewhuie avatar nickcis avatar ocelotsloth avatar pitaj avatar rubys avatar sebastiaandenboer avatar sebbo2002 avatar sedenardi avatar semantic-release-bot avatar sharathprabhal avatar sparticuz avatar spruce avatar takkaria avatar vschlattinger avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.