113 lines
2.5 KiB
JavaScript
113 lines
2.5 KiB
JavaScript
![]() |
|
||
|
"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("."));
|
||
|
});
|
||
|
|