diff --git a/gulp-cache/gulp-cache-tests.ts b/gulp-cache/gulp-cache-tests.ts
new file mode 100644
index 0000000000..2efa3975fc
--- /dev/null
+++ b/gulp-cache/gulp-cache-tests.ts
@@ -0,0 +1,37 @@
+///
+///
+
+import * as fs from "fs";
+import * as gulp from "gulp";
+import * as cache from "gulp-cache";
+import File = require("vinyl");
+
+// Some gulp plugin
+let jshint: any;
+
+gulp.task('lint', function () {
+ gulp.src('./non/existent/path/*.js')
+ .pipe(cache(jshint('.jshintrc'), {
+ key: makeHashKey,
+ success: function (jshintedFile) {
+ return jshintedFile.jshint.success;
+ },
+ value: function (jshintedFile) {
+ return {
+ jshint: jshintedFile.jshint
+ };
+ }
+ }))
+ .pipe(jshint.reporter('default'));
+});
+
+var jsHintVersion = '2.4.1',
+ jshintOptions = fs.readFileSync('.jshintrc');
+
+function makeHashKey(file: File) {
+ return [file.contents.toString('utf8'), jsHintVersion, jshintOptions].join('');
+}
+
+gulp.task('clear', function (done: any) {
+ return cache.clearAll(done);
+});
diff --git a/gulp-cache/gulp-cache.d.ts b/gulp-cache/gulp-cache.d.ts
new file mode 100644
index 0000000000..cfb1cb2514
--- /dev/null
+++ b/gulp-cache/gulp-cache.d.ts
@@ -0,0 +1,94 @@
+// Type definitions for gulp-cache v0.4.5
+// Project: https://github.com/jgable/gulp-cache
+// Definitions by: Arun Aravind
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+///
+///
+///
+
+declare module "gulp-cache" {
+ import File = require("vinyl");
+ import { Transform } from "stream";
+ import { PluginError } from "gulp-util";
+
+ namespace gc {
+ type Predicate = (arg: T) => boolean;
+
+ interface IGulpCacheOptions {
+ /**
+ * The cache instance to use for caching.
+ */
+ fileCache?: IGulpCache;
+
+ /**
+ * The name of the bucket which stores the cached objects.
+ * Default value = 'default'
+ */
+ name?: string,
+
+ /**
+ * The hash generator to use.
+ */
+ key?: (file: File, callback?: (err: any, result: string) => void) => string | Promise;
+
+ /**
+ * Value representing the success of a task.
+ */
+ success?: boolean | Predicate;
+
+ /**
+ * Content that is to be cached.
+ */
+ value?: (result: any) => Object | Promise