最近將項目的構建工具換成了gulp.js,實在受不了ant了,也沒打算考慮grunt。具體為啥選gulp,最主要的原因還是討厭寫配置。
編寫構建腳本過程中發(fā)現(xiàn)有些功能都沒有現(xiàn)成插件可用,干脆自己寫了得了。
我們做前端項目可能會面對如下兩種場景:
針對上面兩種場景,我寫了兩個插件來實現(xiàn)對應功能,分別是gulp-minify-inline-scripts和gulp-make-css-url-version。用法很簡單:
gulp-minify-inline-scripts
var minifyInline = require('gulp-minify-inline-scripts');gulp.task('minify', function() { gulp.src('html/*.html') .pipe(minifyInline()) .pipe(gulp.dest('dist'))});
gulp-make-css-url-version
var makeUrlVer = require('gulp-make-css-url-version');gulp.task('stylesheets', function() { gulp.src('css/*.css') .pipe(makeUrlVer()) .pipe(gulp.dest('dist'))});
gulp-make-css-url-version默認是取圖片文件的md5值作為版本號。
其實編寫gulp.js插件是件十分容易的事,明確插件的功能,按照下面的模板,分分鐘就可以來上一個。
var gutil = require('gulp-util');var through = require('through2');module.exports = function (options) { return through.obj(function (file, enc, cb) { options = options || {}; var self = this; if (file.isNull()) { this.push(file); return cb(); } if (file.isStream()) { this.emit('error', new gutil.PluginError(PLUGIN_NAME, 'Streaming not supported')); return cb(); } var html = file.contents.toString(); /** replace html func */ file.contents = new Buffer(html); self.push(file); cb(); });};