Yet Another Live Reload

YALR - Yet Another Live Reload

...because the other node.js based LiveReload compatible servers just didn't work.

Watches file modifications and reloads web pages automatically for you.

[sudo] npm install -g yalr
yalr [options]

The yalr command will start a LiveReload Protocol v7 compatible Web Socket server listening on a port 35729 while watching all the files for modifications in the current working directory and its subdirectories. File/directory deletions and additions are considered as modifications too. Just add this script tag to your app:

<script>document.write('<script src="http://'
+ (location.host || 'localhost').split(':')[0]
+ ':35729/livereload.js"></'
+ 'script>')</script> 

or use the LiveReload Chrome, Firefox or Safari extension and you're good to go!

Now your web pages will be automatically reloaded every time when a change is detected in the watch path.

The watch path and various other options can be passed to the yalr command via command line switches (use --help to list them).

Another method to configure YALR is via an yalr.js file which is read from the current working directory or from a path specified with --configFile.

The yalr.js is a node.js module exposing a single object:

module.exports = {
  // Watch files only in the public directory 
  path: "public",
  // Reload page only when html, css or js file changes 
  match: [

You can use both methods simultaneously. Command line switches will override the options defined in the yalr.js file.

YALR can be really easily be embedded in node.js applications.

Simplest use case:


This is effectly same as executing the yalr command without options.

It can have options too:

  path: "public"

It will also read the yalr.js. Options in the yalr.js will take precedence over the options given using the API. Which makes it perfect for developer specific config. Just put it to .gitignore.

The yalr module function returns an object with the current options and a tag attribute which contains a string of the script tag. This can be used to make more tight integrations to various node.js web frameworks. The example directory contains an example using the Express framework.

Options for the yalr.js file, node.js API and the command line.

Port to listen to.

Default: 35729

Path to watch.

From the command line this can be defined multiple times and and from the yalr.js it can be also an array.

Default: (The current working directory)

Match only certain files.

Glob string or JavaScript RegExp object. The glob string will be matched against the the basename and the RegExp object will be matched against the full file path. Regexp format is not avaible from the command line.

From the command line this can be defined multiple times and and from the yalr.js it can be also an array.

Default: (anything)

Like match, but for ignoring files.

Default: (nothing)

Debounce time in milliseconds before actually sending the reload.

In some cases, such as static site generators, you might have multiple change events coming in for long periods of time. This option makes YALR to wait until the events stop arriving before sending the reload request.

Default: 0

Sleep milliseconds after a reload.

In some cases a reload can cause other files to be generated which can lead in the worst case to an infinite reload loop. Setting this to 1000 will prevent that effectively.

Default: 0

Print more debugging stuff.

Default: false

Be totally silent.

Default: false

Custom path for the yalr.js file.

Not avaible in the yalr.js :)

Default: (The current working directory)

Start YALR as disabled.

Useful for temporally disabling the embedded YALR server from the yalr.js file.

Default: false

Disable smart live CSS reloads.

Default: false

Execute CLI command or Javascript function with callback before update.

Very useful for running SASS or CoffeeScript compilers.

Thanks to orignal LiveReload project! If you're on OS X consider purchasing it since It will also help this project too because this uses the MIT licenced livereload.js component of LiveReload 2.

The MIT License