aboutsummaryrefslogtreecommitdiffstats
path: root/web/gulpfile.js
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2014-09-13 17:00:05 +0200
committerMaximilian Hils <git@maximilianhils.com>2014-09-13 17:00:05 +0200
commit9bacb6d426a54882235b8d745dbf123c7958c887 (patch)
tree7e7f27f3775e66fabab4ddc1f6b3c84a53178e85 /web/gulpfile.js
parentb59234e25db8418cd53795ce94dda943e54f8ac1 (diff)
downloadmitmproxy-9bacb6d426a54882235b8d745dbf123c7958c887.tar.gz
mitmproxy-9bacb6d426a54882235b8d745dbf123c7958c887.tar.bz2
mitmproxy-9bacb6d426a54882235b8d745dbf123c7958c887.zip
gulpfile
Diffstat (limited to 'web/gulpfile.js')
-rw-r--r--web/gulpfile.js99
1 files changed, 99 insertions, 0 deletions
diff --git a/web/gulpfile.js b/web/gulpfile.js
new file mode 100644
index 00000000..f14bcc3b
--- /dev/null
+++ b/web/gulpfile.js
@@ -0,0 +1,99 @@
+var gulp = require("gulp");
+
+var concat = require('gulp-concat');
+var gutil = require('gulp-util');
+var jshint = require("gulp-jshint");
+var less = require("gulp-less");
+var livereload = require("gulp-livereload");
+var minifyCSS = require('gulp-minify-css');
+var react = require("gulp-react");
+var sourcemaps = require('gulp-sourcemaps');
+var uglify = require('gulp-uglify');
+
+
+var path = {
+ dist: "../libmproxy/web/",
+ js: {
+ vendor: [
+ 'vendor/jquery/jquery.js',
+ 'vendor/lodash/lodash.js',
+ 'vendor/react/react-with-addons.js',
+ 'vendor/react-router/react-router.js',
+ ],
+ app: [
+ 'js/router.jsx',
+ 'js/certinstall.jsx',
+ 'js/mitmproxy.js',
+ ],
+ },
+ css: {
+ vendor: ["css/vendor.less"],
+ app: ["css/app.less"]
+ },
+ fonts: ["src/vendor/fontawesome/fontawesome-webfont.*"],
+ html: ["src/*.html", "!src/benchmark.html", "!src/test.html"]
+};
+gulp.task("fonts", function () {
+ return gulp.src(path.fonts)
+ .pipe(gulp.dest(path.dist + "static/fonts"));
+});
+
+function styles(files, dev) {
+ return (gulp.src(files, {base: "src", cwd: "src"})
+ .pipe(dev ? sourcemaps.init() : gutil.noop())
+ .pipe(less())
+ .pipe(dev ? sourcemaps.write(".", {sourceRoot: "/static"}) : gutil.noop())
+ // No sourcemaps support yet :-/
+ // https://github.com/jonathanepollack/gulp-minify-css/issues/34
+ .pipe(!dev ? minifyCSS() : gutil.noop())
+ .pipe(gulp.dest(path.dist + "static"))
+ .pipe(livereload({ auto: false })));
+}
+gulp.task("styles-app-dev", styles.bind(undefined, path.css.app, true));
+gulp.task("styles-app-prod", styles.bind(undefined, path.css.app, false));
+gulp.task("styles-vendor-dev", styles.bind(undefined, path.css.vendor, true));
+gulp.task("styles-vendor-prod", styles.bind(undefined, path.css.vendor, false));
+gulp.task("styles-dev", ["styles-app-dev", "styles-vendor-dev"]);
+gulp.task("styles-prod", ["styles-app-prod", "styles-vendor-prod"]);
+
+function scripts(files, filename, dev) {
+ return gulp.src(files, {base: "src", cwd: "src"})
+ .pipe(dev ? sourcemaps.init() : gutil.noop())
+ .pipe(react())
+ .pipe(concat(filename))
+ .pipe(!dev ? uglify() : gutil.noop())
+ .pipe(dev ? sourcemaps.write(".", {sourceRoot: "/static"}) : gutil.noop())
+ .pipe(gulp.dest(path.dist + "static/js"))
+ .pipe(livereload({ auto: false }));
+}
+gulp.task("scripts-app-dev", scripts.bind(undefined, path.js.app, "app.js", true));
+gulp.task("scripts-app-prod", scripts.bind(undefined, path.js.app, "app.js", false));
+gulp.task("scripts-vendor-dev", scripts.bind(undefined, path.js.vendor, "vendor.js", true));
+gulp.task("scripts-vendor-prod", scripts.bind(undefined, path.js.vendor, "vendor.js", false));
+gulp.task("scripts-dev", ["scripts-app-dev", "scripts-vendor-dev"]);
+gulp.task("scripts-prod", ["scripts-app-prod", "scripts-vendor-prod"]);
+
+gulp.task("jshint", function () {
+ return gulp.src(["src/js/**"])
+ .pipe(react())
+ .pipe(jshint())
+ .pipe(jshint.reporter("jshint-stylish"))
+});
+
+gulp.task("html", function () {
+ return gulp.src(path.html)
+ .pipe(gulp.dest(path.dist + "static"))
+ .pipe(livereload({ auto: false }));
+});
+
+common = ["fonts", "html", "jshint"];
+gulp.task("dev", common.concat(["styles-dev", "scripts-dev"]));
+gulp.task("prod", common.concat(["styles-prod", "scripts-prod"]));
+
+gulp.task("default", ["dev"], function () {
+ livereload.listen({auto: true});
+ gulp.watch(["src/vendor/**"], ["scripts-vendor-dev", "styles-vendor-dev"]);
+ gulp.watch(["src/js/**"], ["scripts-app-dev", "jshint"]);
+ gulp.watch(["src/css/**"], ["styles-app-dev"]);
+ gulp.watch(["src/*.html"], ["html"]);
+}); \ No newline at end of file