diff --git a/connect-livereload/connect-livereload-tests.ts b/connect-livereload/connect-livereload-tests.ts
new file mode 100644
index 000000000..2609871e9
--- /dev/null
+++ b/connect-livereload/connect-livereload-tests.ts
@@ -0,0 +1,69 @@
+///
+
+import * as connect from "connect";
+import * as livereload from "connect-livereload";
+
+const app = connect();
+
+// With no options
+app.use(livereload());
+
+// With string options
+app.use(livereload({
+ port: 35729,
+ ignore: [".js", ".svg"]
+}));
+
+// With RegExp options
+app.use(livereload({
+ port: 35729,
+ ignore: [/\.js(\?.*)?$/, /\.css(\?.*)?$/]
+}));
+
+// With default options
+app.use(livereload({
+ ignore: [
+ /\.js(\?.*)?$/, /\.css(\?.*)?$/, /\.svg(\?.*)?$/, /\.ico(\?.*)?$/, /\.woff(\?.*)?$/,
+ /\.png(\?.*)?$/, /\.jpg(\?.*)?$/, /\.jpeg(\?.*)?$/, /\.gif(\?.*)?$/, /\.pdf(\?.*)?$/
+ ],
+
+ // include all urls by default
+ include: [/.*/],
+
+ // this function is used to determine if the content of `res.write` or `res.end` is html.
+ html: function (str) {
+ if (!str) return false;
+ return /<[:_-\w\s\!\/\=\"\']+>/i.test(str);
+ },
+
+ // rules are provided to find the place where the snippet should be inserted.
+ // the main problem is that on the server side it can be tricky to determine if a string will be valid html on the client.
+ // the function `fn` of the first `match` is executed like this `body.replace(rule.match, rule.fn);`
+ // the function `fn` has got the arguments `fn(w, s)` where `w` is the matches string and `s` is the snippet.
+ rules: [{
+ match: /<\/body>(?![\s\S]*<\/body>)/i,
+ fn: prepend
+ }, {
+ match: /<\/html>(?![\s\S]*<\/html>)/i,
+ fn: prepend
+ }, {
+ match: /<\!DOCTYPE.+?>/i,
+ fn: append
+ }],
+
+ // port where the script is loaded
+ port: 35729,
+
+ // location where the script is provided (not by connect-livereload). Change this e.g. when serving livereload with a proxy.
+ src: "http://localhost:35729/livereload.js?snipver=1",
+
+ // Set this option to `true` to set `req.headers['accept-encoding']` to 'identity' (disabling compression)
+ disableCompression: false
+}));
+
+function prepend(w: string, s: string): string {
+ return s + w;
+}
+function append(w: string, s: string): string {
+ return w + s;
+}
\ No newline at end of file
diff --git a/connect-livereload/connect-livereload.d.ts b/connect-livereload/connect-livereload.d.ts
new file mode 100644
index 000000000..98e851fec
--- /dev/null
+++ b/connect-livereload/connect-livereload.d.ts
@@ -0,0 +1,38 @@
+// Type definitions for connect-livereload v0.5.3
+// Project: https://github.com/intesso/connect-livereload
+// Definitions by: Maxime LUCE
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+///
+
+declare module "connect-livereload" {
+ import { HandleFunction } from "connect";
+
+ function livereload(): HandleFunction;
+ function livereload(options: livereload.Options): HandleFunction;
+
+ module livereload {
+ export type FileMatcher = string | RegExp;
+
+ export interface Rule {
+ match: RegExp;
+ fn: (w: string, s: string) => string;
+ }
+
+ export interface Options {
+ ignore?: FileMatcher[];
+ excludeList?: FileMatcher[];
+
+ include?: FileMatcher[];
+ html?: (val: string) => boolean;
+ rules?: Rule[];
+ disableCompression?: boolean;
+
+ hostname?: string;
+ port?: number;
+ src?: string;
+ }
+ }
+
+ export = livereload;
+}
\ No newline at end of file