Add deploy task

This commit is contained in:
Martin Kleinschrodt 2014-08-03 17:22:28 +02:00
parent c9427e0c16
commit 93d3f44549
3 changed files with 94 additions and 14 deletions

4
.gitignore vendored
View File

@ -1,8 +1,8 @@
bower_components
node_modules
.sass-cache
deploy
# sass-generated css files
# stylus-generated css files
src/components/**/*.css
src/styles/mixins.css
src/styles/config.css

View File

@ -8,7 +8,54 @@ var gulp = require("gulp"),
argv = require("yargs").argv,
qunit = require("gulp-qunit"),
jshint = require("gulp-jshint"),
stylish = require("jshint-stylish");
stylish = require("jshint-stylish"),
Q = require("q"),
vulcan = require("vulcanize"),
rmdir = require("rimraf"),
ncp = require("ncp").ncp,
path = require("path"),
mkdirp = require("mkdirp");
function compileCss() {
var deferred = Q.defer();
gulp.src("./src/**/*.styl")
.pipe(stylus({use: [nib()]}))
.pipe(gulp.dest("./src"))
.on("end", function() {
deferred.resolve();
});
return deferred.promise;
}
function build(dest) {
var deferred = Q.defer();
vulcan.setOptions({
verbose: true,
inline: true,
csp: true,
input: "index.html",
output: path.join(dest, "index.html")
}, function(err) {
if (err) {
console.error(err);
process.exit(1);
}
vulcan.processDocument();
deferred.resolve();
});
return deferred.promise;
}
function lint(files) {
return gulp.src(files || "src/**/*.{js,html}")
.pipe(jshint.extract("auto"))
.pipe(jshint(".jshintrc"))
.pipe(jshint.reporter(stylish));
}
gulp.task("stylus", function () {
if (argv.watch) {
@ -18,9 +65,7 @@ gulp.task("stylus", function () {
.pipe(gulp.dest("./src"));
});
} else {
gulp.src("./src/**/*.styl")
.pipe(stylus({use: [nib()]}))
.pipe(gulp.dest("./src"));
return compileCss();
}
});
@ -29,13 +74,6 @@ gulp.task("test", function() {
.pipe(qunit());
});
function lint(files) {
return gulp.src(files || "src/**/*.{js,html}")
.pipe(jshint.extract("auto"))
.pipe(jshint(".jshintrc"))
.pipe(jshint.reporter(stylish));
}
gulp.task("lint", function () {
if (argv.watch) {
watch({glob: "src/**/*.{js,html}"}, function(files) {
@ -47,4 +85,41 @@ gulp.task("lint", function () {
} else {
return lint();
}
});
// Deploy a minified/built version of the app to a given destination folder
gulp.task("deploy", function() {
var dest = argv.dest || "deploy";
console.log("Deploying app to " + path.resolve(process.cwd(), dest));
Q(function() {
console.log("Cleaning up existing target folder...");
return Q.nfcall(rmdir, dest);
})
.then(function() {
console.log("Creating target folder structure...");
return Q.all([
Q.nfcall(mkdirp, path.join(dest, "src")),
Q.nfcall(mkdirp, path.join(dest, "lib"))
]);
})
.then(function() {
console.log("Compiling css files...");
return compileCss();
})
.then(function() {
console.log("Building source...");
return build(dest);
})
.then(function() {
console.log("Copying assets...");
return Q.all([
Q.nfcall(ncp, path.join("src", "crypto.js"), path.join(dest, "src", "crypto.js")),
Q.nfcall(ncp, path.join("lib", "sjcl.js"), path.join(dest, "lib", "sjcl.js")),
Q.nfcall(ncp, "assets", path.join(dest, "assets"))
]);
})
.then(function() {
console.log("Done!");
process.exit(1);
});
});

View File

@ -9,6 +9,11 @@
"gulp-watch": "^0.6.9",
"gulp-qunit": "^0.3.3",
"gulp-jshint": "^1.8.3",
"jshint-stylish": "^0.4.0"
"jshint-stylish": "^0.4.0",
"q": "^1.0.1",
"vulcanize": "^0.4.1",
"rimraf": "^2.2.8",
"ncp": "^0.6.0",
"mkdirp": "^0.5.0"
}
}