A static site generator based on scheduled tasks
Imagine you wanted to text yourself whenever your favorite team scores a goal. You could write a series of functions which: poll a sports API every 30 seconds and if there is a change in the score reformat the response from the API and then send a text message to your phone number. tonic allows you to write a complex system of functions in a modular and reusable way.
The hue-weather-lights project uses tonic to change the colors of Philips Hue lightbulbs based on local weather conditions.
Have another usecase?
Before you get started, you must already have node.js installed.
$ npm install tonic --save
This will install tonic into your project and save it as a dependency in your
Create a file called app.js.
var tonic = require'tonic';var app = tonic;appjobs'jobs'; // A directory called jobs must existappstart;
This application won't do anything yet since we haven't defined any jobs.
Create a new file in the jobs directory with a .js extension.
This will create a new job that executes once every minute.
$ node app.js
This will run all registered jobs. You should see
Running... printed out to the console once every minute.
Create another file in the jobs directory with a .js extension.
job'RandomGenerator'var rnd = Mathrandom;donernd;every'10 seconds';job'RandomPrinter'console.log'Random:' rnd;after'RandomGenerator';
app.js and you should now see a random number printed to the console every 10 seconds.
In this example, RandomGenerator will run every second and RandomPrinter will be run after RandomGenerator completes. The done callback is used to denote that a job has completely successfully. If there are no dependent jobs, calling done is optional.
Check out the entire documentation for more information.