Add Gulp tasks

This commit is contained in:
Maxime Thirouin
2014-05-04 08:33:30 +02:00
parent cac43b7c59
commit f93efb0c00
9 changed files with 173 additions and 0 deletions

View File

@@ -30,6 +30,7 @@ gulp.task("watch", ["dist"], function() {
gulp.watch("./styles/**/*.css", ["stylesheets"])
gulp.watch("./scripts/**/*.js", ["scripts"])
gulp.watch("./tasks/**/*.js", ["scripts:linting"])
gulp.watch("./tests/**/*.js", ["scripts:linting"])
// gulp.watch("./dist/**/*").on("change", server.livereload)
})

5
tasks/clean.js Normal file
View File

@@ -0,0 +1,5 @@
var rimraf = require("rimraf")
module.exports = function() {
rimraf.sync("./dist")
}

18
tasks/options.js Normal file
View File

@@ -0,0 +1,18 @@
/**
* parses cli arguments as options
*/
var options = require("minimist")(process.argv.slice(2))
var defaults = {
plumber: true,
minify: false
}
// set some defaults options depending on some flags
if (options.production) {
defaults.plumber = false
defaults.minify = true
}
options.plumber = options.plumber === undefined ? defaults.plumber: options.plumber
options.minify = options.minify === undefined ? defaults.minify: options.minify
module.exports = options

16
tasks/publish.js Normal file
View File

@@ -0,0 +1,16 @@
var gulp = require("gulp")
var ghPages = require("gulp-gh-pages")
/**
* publish task
*
* publish build in the gh-pages branch
*/
module.exports = function() {
return gulp.src("./dist/**/*")
.pipe(ghPages({
remoteUrl: "git@github.com:MoOx/pjax.git",
branch: "gh-pages",
cacheDir: __dirname + "/../.publish"
}))
}

24
tasks/scripts-linting.js Normal file
View File

@@ -0,0 +1,24 @@
var gulp = require("gulp")
var opts = require("./options")
var util = require("gulp-util")
var plumber = require("gulp-plumber")
var jscs = require("gulp-jscs")
var jshint = require("gulp-jshint")
/**
* task scripts:linting
*
* jshint + jscs
*/
module.exports = function() {
return gulp.src([
"./src/scripts/**/*.js",
"!./src/scripts/lib/**/*.js",
"./tasks/**/*.js",
"./tests/**/*.js",
])
.pipe(opts.plumber ? plumber(): util.noop())
.pipe(jscs())
.pipe(jshint())
.pipe(jshint.reporter("jshint-stylish"))
}

27
tasks/scripts.js Normal file
View File

@@ -0,0 +1,27 @@
var gulp = require("gulp")
var util = require("gulp-util")
var plumber = require("gulp-plumber")
var browserify = require("gulp-browserify")
var opts = require("./options")
var transforms = [
// "jadeify",
// "debowerify",
// "decomponentify",
// "deglobalify",
// "es6ify"
]
if (opts.minify) {
transforms.push("uglifyify")
}
module.exports = function() {
return gulp.src("./src/scripts/*.js")
.pipe(opts.plumber ? plumber(): util.noop())
.pipe(browserify({
transform: transforms,
debug: opts.production !== undefined
}
))
.pipe(gulp.dest("./dist/scripts/"))
}

32
tasks/server.js Normal file
View File

@@ -0,0 +1,32 @@
var gulpUtil = require("gulp-util")
var connect = require("connect")
var connectLivereload = require("connect-livereload")
var livereload = require("gulp-livereload")
var opn = require("opn")
var livereloadServer
var ports = {
web: 2402,
livereload: 2403
}
module.exports = {
start: function() {
livereloadServer = livereload(ports.livereload)
var app = connect()
.use(connectLivereload({port: ports.livereload}))
.use(connect.static("./dist/"))
require("http").createServer(app)
.listen(ports.web)
.on("listening", function() {
gulpUtil.log("Started connect web server on http://localhost:" + ports.web + " and livereload server on http://localhost:" + ports.livereload)
})
opn("http://localhost:" + ports.web)
},
livereload: function(file) {
livereloadServer.changed(file.path)
}
}

6
tasks/static.js Normal file
View File

@@ -0,0 +1,6 @@
var symlink = require("gulp-symlink")
gulp.task("static", function() {
return gulp.src("./src/static/*")
.pipe(symlink("./dist/"))
})

44
tasks/stylesheets.js Normal file
View File

@@ -0,0 +1,44 @@
var gulp = require("gulp")
var opts = require("./options")
var util = require("gulp-util")
var plumber = require("gulp-plumber")
var rework = require("gulp-rework")
var reworkPlugins = {
imprt: require("rework-npm"),
// parent: require("rework-parent"),
// breakpoints: require("rework-breakpoints"),
vars: require("rework-vars"),
calc: require("rework-calc"),
// colorFn: require("rework-color-function"), // Tab Atkins's proposal color function in CSS
// hexAlpha: require("rework-hex-alpha"), // use 4-digit or 8-digit hex colors with alpha channels
// inline: require("rework-plugin-inline"),
// ieLimits: require("rework-ie-limits"),
// remFallback: require("rework-rem-fallback"),
// clearfix: require("rework-clearfix"),
}
var autoprefixer = require("gulp-autoprefixer")
module.exports = function() {
return gulp.src("./src/styles/*.css")
.pipe(opts.plumber ? plumber(): util.noop())
.pipe(rework(
reworkPlugins.imprt("./src/css"),
rework.colors(),
rework.references(),
// reworkPlugins.parent,
// reworkPlugins.breakpoints,
reworkPlugins.vars(),
reworkPlugins.calc,
//reworkPlugins.colorFn,
//reworkPlugins.hexAlpha,
//reworkPlugins.inline,
//reworkPlugins.ieLimits,
//reworkPlugins.remFallback,
// reworkPlugins.clearfix,
// rework.ease(),
// rework.extend(),
{sourcemap: !option.minify}
))
.pipe(autoprefixer())
.pipe(gulp.dest(paths.dist.stylesheets))
}