3 Star 5 Fork 2

w404 / gulp

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
gulpfile.js 3.74 KB
一键复制 编辑 原始数据 按行查看 历史
w404 提交于 2016-06-29 21:25 . update
var gulp = require('gulp'),
browserSync = require('browser-sync'),
reload = browserSync.reload,
$ = require('gulp-load-plugins')();
// 管理资源文件路径集合
var config = {};
// 源资源文件路径
config['assets'] = {
global: '*',
static: ['css/', 'images/', 'js/'],
less: ['less/index.less', 'less/product.less', 'less/about.less', 'less/help.less', 'less/advertise.less'],
css: 'css/',
_css: 'css/*.css',
img: 'images/*.*',
_img: 'images/*.*',
js: 'js/',
_js: 'js/*.js',
html: 'html/',
_html: 'html/*.*'
};
// 临时资源文件路径
config['sources'] = {
global: 'sources/',
_global: 'sources/rev/**/*.json',
css: 'sources/rev/css',
_css: 'sources/rev/css/*.json',
js: 'sources/rev/js',
_js: 'sources/rev/js/*.json',
img: 'sources/rev/images',
_img: 'sources/rev/images/*.json'
};
// 目标文件路径 不用替换
config['dist'] = {
global: 'dist/',
_global: 'dist/**/*',
static: ['dist/css/', 'dist/images/', 'dist/js/'],
css: 'dist/css/',
less: 'dist/less/',
img: 'dist/images/',
js: 'dist/js/',
html: 'dist/html/',
_html: 'dist/**/*.html',
rev_json: 'dist/rev-manifest.json',
rev_img: 'dist/**/*.+(css|html|js)'
};
// 发布前清理文件
gulp.task('clean', function() {
return gulp.src([config['dist'].global, config['sources'].global], { read: false })
.pipe($.clean());
});
// 发布后清理临时文件
gulp.task('cnext', function() {
return gulp.src([config['dist'].rev_json, config['sources'].global], { read: false })
.pipe($.clean());
});
// css文件处理
gulp.task('buildCss', function() {
return gulp.src(config['assets']._css)
.pipe($.minifyCss())
.pipe($.rev())
.pipe(gulp.dest(config['dist'].css))
.pipe($.rev.manifest())
.pipe(gulp.dest(config['sources'].css));
});
// js文件处理
gulp.task('buildJs', function() {
return gulp.src(config['assets']._js)
.pipe($.uglify())
.pipe($.rev())
.pipe(gulp.dest(config['dist'].js))
.pipe($.rev.manifest())
.pipe(gulp.dest(config['sources'].js));
});
// img文件处理
gulp.task('buildImg', function() {
return gulp.src(config['assets']._img)
.pipe($.rev())
.pipe(gulp.dest(config['dist'].img))
.pipe($.rev.manifest())
.pipe(gulp.dest(config['dist'].global));
});
// html文件处理
gulp.task('buildHtml', function() {
return gulp.src(config['assets']._html)
.pipe(gulp.dest(config['dist'].html));
});
// 版本号文件替换
gulp.task('rev', ['buildJs', 'buildCss', 'buildHtml'], function() {
return gulp.src([config['sources']._global, config['dist']._global]) //- 读取 rev-manifest.json 文件以及需要进行css名替换的文件
.pipe($.revCollector()) //- 执行文件内css名的替换
.pipe(gulp.dest(config['dist'].global))
.pipe(reload({ stream: true })); //- 替换后的文件输出的目录
});
// 版本号文件替换(仅图片)
gulp.task('revimg', ['buildImg'], function() {
return gulp.src([config['dist'].rev_json, config['dist'].rev_img])
.pipe($.revCollector())
.pipe(gulp.dest(config['dist'].global))
.pipe(reload({ stream: true }));
});
// 编译less
gulp.task('less', function() {
gulp.src(config['assets'].less)
.pipe($.plumber({ errorHandler: $.notify.onError('Error: <%= error.message %>') }))
.pipe($.less())
.pipe(gulp.dest(config['assets'].css));
});
// 简化命令行命令(直接输入gulp); 监听事件(编译less后压缩css)
gulp.task('default', function() {
gulp.watch(config['assets'].less, ['less']);
});
// 发布
gulp.task('build', function(cb) {
$.sequence('clean', 'rev', 'revimg', 'cnext', cb);
})
NodeJS
1
https://gitee.com/w404/gulp.git
git@gitee.com:w404/gulp.git
w404
gulp
gulp
master

搜索帮助