diff --git a/gulp-rev-replace/gulp-rev-replace-tests.ts b/gulp-rev-replace/gulp-rev-replace-tests.ts
new file mode 100644
index 000000000..57515c9ac
--- /dev/null
+++ b/gulp-rev-replace/gulp-rev-replace-tests.ts
@@ -0,0 +1,63 @@
+///
+///
+///
+///
+
+import gulp = require('gulp');
+import revReplace = require('gulp-rev-replace');
+import rev = require('gulp-rev');
+import useref = require('gulp-useref');
+
+gulp.task("index", () => {
+ var userefAssets = useref.assets();
+
+ return gulp.src("src/index.html")
+ .pipe(userefAssets) // Concatenate with gulp-useref
+ .pipe(rev()) // Rename the concatenated files
+ .pipe(userefAssets.restore())
+ .pipe(useref())
+ .pipe(revReplace()) // Substitute in new filenames
+ .pipe(gulp.dest('public'));
+});
+
+
+var opt = {
+ srcFolder: 'src',
+ distFolder: 'dist'
+}
+
+gulp.task("revision", ["dist:css", "dist:js"], () =>
+ gulp.src(["dist/**/*.css", "dist/**/*.js"])
+ .pipe(rev())
+ .pipe(gulp.dest(opt.distFolder))
+ .pipe(rev.manifest())
+ .pipe(gulp.dest(opt.distFolder))
+);
+
+gulp.task("revreplace", ["revision"], () => {
+ var manifest = gulp.src("./" + opt.distFolder + "/rev-manifest.json");
+
+ return gulp.src(opt.srcFolder + "/index.html")
+ .pipe(revReplace({manifest: manifest}))
+ .pipe(gulp.dest(opt.distFolder));
+});
+
+
+function replaceJsIfMap(filename: string): string {
+ if (filename.indexOf('.map') > -1) {
+ return filename.replace('js/', '');
+ }
+ return filename;
+}
+
+gulp.task("revreplace", ["revision"], () => {
+ var manifest = gulp.src("./" + opt.distFolder + "/rev-manifest.json");
+
+ return gulp.src(opt.distFolder + '**/*.js')
+ .pipe(revReplace({
+ manifest: manifest,
+ modifyUnreved: replaceJsIfMap,
+ modifyReved: replaceJsIfMap
+ }))
+ .pipe(gulp.dest(opt.distFolder));
+});
diff --git a/gulp-rev-replace/gulp-rev-replace.d.ts b/gulp-rev-replace/gulp-rev-replace.d.ts
new file mode 100644
index 000000000..3e683d183
--- /dev/null
+++ b/gulp-rev-replace/gulp-rev-replace.d.ts
@@ -0,0 +1,21 @@
+// Type definitions for gulp-rev-replace v0.2.1
+// Project: https://github.com/jamesknelson/gulp-rev-replace
+// Definitions by: Tanguy Krotoff
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+///
+
+declare module 'gulp-rev-replace' {
+ interface IOptions {
+ canonicalUris?: boolean;
+ replaceInExtensions?: Array;
+ prefix?: string;
+ manifest?: NodeJS.ReadWriteStream;
+ modifyUnreved?: Function;
+ modifyReved?: Function;
+ }
+
+ function revReplace(options?: IOptions): NodeJS.ReadWriteStream;
+
+ export = revReplace;
+}