diff options
author | Florian Dold <florian.dold@gmail.com> | 2016-01-18 22:28:19 +0100 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2016-01-18 22:28:19 +0100 |
commit | fffc1153ca0ea08ef9c6d519e7f3d9a26fa17dd1 (patch) | |
tree | e025a75cc9cf09daa8c0304c8b5bbc11e727c0b1 /extension/gulpfile.js | |
parent | f5626ef322709e11899be4ff136ff2a2cf7f37ed (diff) |
Gulp build file
Diffstat (limited to 'extension/gulpfile.js')
-rw-r--r-- | extension/gulpfile.js | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/extension/gulpfile.js b/extension/gulpfile.js new file mode 100644 index 000000000..2f35e2b89 --- /dev/null +++ b/extension/gulpfile.js @@ -0,0 +1,112 @@ + +"use strict"; + +const gulp = require("gulp"); +const map = require("map-stream"); +const ts = require("gulp-typescript"); +const zip = require("gulp-zip"); +const fs = require("fs"); +const del = require("del"); +const through = require('through2'); +const File = require('vinyl'); + +const paths = { + ts: [ + "lib/**.{ts,tsx}", + "background/*.{ts,tsx}", + "content_scripts/*.{ts,tsx}", + "popup/*.{ts,tsx}", + "pages/*.{ts,tsx}", + ], + dist: [ + "manifest.json", + "img/*", + "lib/vendor/*", + "lib/emscripten/libwrapper.js" + ], +} + + + +const tsBaseArgs = { + target: "es5", + jsx: "react", + experimentalDecorators: true, + module: "system", + sourceMap: true, + noLib: true, +}; + + +let manifest; +(() => { + const f = fs.readFileSync("manifest.json", "utf8"); + manifest = JSON.parse(f); +})(); + +console.log("version:", manifest.version); + + +gulp.task("clean", function() { + del("_build/ext"); +}); + +// Package the extension +gulp.task("build-prod", ["clean"], function() { + console.log("hello"); + const tsArgs = {}; + Object.assign(tsArgs, tsBaseArgs); + console.log("args", JSON.stringify(tsArgs)); + tsArgs.typescript = require("typescript"); + // relative to the gulp.dest + tsArgs.outDir = "."; + // We don't want source maps for production + tsArgs.sourceMap = undefined; + gulp.src(paths.ts) + .pipe(map((f,cb) => { console.log(f.path); cb(null, f); })) + .pipe(ts(tsArgs)) + .pipe(gulp.dest("_build/ext/")); + gulp.src(paths.dist, {base: ".", stripBOM: false}) + .pipe(gulp.dest("_build/ext/")); +}); + + +gulp.task("package", ["build-prod"], function() { + console.log("hello, packaging"); + let zipname = String.prototype.concat("taler-wallet-", manifest.version, ".zip"); + gulp.src("_build/ext/*", {buffer: false, stripBOM: false}) + .pipe(zip(zipname)) + .pipe(gulp.dest("_build/")); +}); + +function tsconfig(confBase) { + let conf = { + compilerOptions: {}, + files: [] + }; + Object.assign(conf.compilerOptions, confBase); + return through.obj(function(file, enc, cb) { + console.log("file", file.relative); + conf.files.push(file.relative); + cb(); + }, function(cb) { + console.log("done"); + let x = JSON.stringify(conf, null, 2); + let f = new File({ + path: "tsconfig.json", + contents: new Buffer(x), + }); + this.push(f) + cb(); + }); +} + + +// Generate the tsconfig file +// that should be used during development. +gulp.task("tsconfig", function() { + gulp.src(paths.ts, {base: "."}) + .pipe(tsconfig(tsBaseArgs)) + .pipe(gulp.dest(".")); +}); + |