gulp配置实现修改jscsshtml自动刷新

Posted 简惬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gulp配置实现修改jscsshtml自动刷新相关的知识,希望对你有一定的参考价值。

写在前面:

本配置支持es6、less、react

1.首先

给出初始的目录结构

给出执行gulp后的目录结构

给出执行gulp --p后的目录结构

2.package.json里是一个写入。文件描述了npm包的相关配置信息(作者、简介、包依赖等)和所需模块。

{
  "name": "gruntTest", 
  "version": "1.0.0",
  "description": "",
  "main": "Gulpfile.js"
}

3.Gulpfile.js添加要执行的任务

var gulp = require(\'gulp\');
var uglify = require(\'gulp-uglify\');  //js压缩
var concat = require(\'gulp-concat\');  //合并文件
var minifyCSS = require(\'gulp-minify-css\');  //css压缩
var less = require(\'gulp-less\');  //less
var changedInPlace = require(\'gulp-changed-in-place\');//不管修改哪个文件,gulp会简化DEST里的html文件
var minifyHTML = require(\'gulp-htmlmin\');  //简化html
var browserSync = require(\'browser-sync\').create(); //自动刷新
var babel = require(\'gulp-babel\'); //支持es6
var argv = require(\'yargs\').argv; //支持不同环境
var sequence = require(\'gulp-sequence\'); //按照顺序执行
var watch = require(\'watch\');  //监听
var clean = require(\'gulp-clean\');  //监听
//npm install --save-dev gulp-babel babel-preset-es2015
var DEST = \'dest/\';
var HTML_PATH = \'./src/*.html\';

gulp.task(\'minify-js\', function(){
	if(argv.p){
		gulp.src(\'src/source/*.js\')
			.pipe(babel({
				presets: [\'es2015\',\'react\']
			}))
			.pipe(uglify())
			.pipe(concat(\'gruntTest.min.js\'))
			.pipe(gulp.dest(DEST+\'js\'))

	}else{
		gulp.src(\'src/source/*.js\')
			.pipe(babel({
				presets: [\'es2015\',\'react\']
			}))
			.pipe(uglify())
			.pipe(concat(\'gruntTest.min.js\'))
			.pipe(gulp.dest(\'src/js\'))		
	}		
});
gulp.task(\'minify-css\', function(){
	if(argv.p){
		gulp.src(\'src/less/*.less\')  //或者用[\'src/less/p1.less\',\'src/less/p2.less\']
			.pipe(less())
			.pipe(minifyCSS())
			.pipe(concat(\'style.min.css\'))
			.pipe(gulp.dest(DEST+\'css\'))
			.pipe(browserSync.stream());	
		}else{
			gulp.src(\'src/less/*.less\')  //或者用[\'src/less/p1.less\',\'src/less/p2.less\']
				.pipe(less())
				.pipe(minifyCSS())
				.pipe(concat(\'style.min.css\'))
				.pipe(gulp.dest(\'src/css\'))
				.pipe(browserSync.stream());
		}
});
gulp.task(\'minify-html\', function(){
	gulp.src(HTML_PATH)
		.pipe(changedInPlace({firstPass: true}))
		.pipe(minifyHTML({collapseWhitespace: true}))
		.pipe(gulp.dest(DEST))
		.pipe(browserSync.stream());
});
gulp.task(\'clean\', function () {
  	gulp.src([\'./src/css/*.css\',\'./src/js/*.js\'], {read: false})
    	.pipe(clean());
});
var files = [
	\'./src/css/*.css\',
	\'./src/js/*.js\'
];
gulp.task(\'browser-sync\', function(){
	browserSync.init(files,{
		server: {
			baseDir: \'./\'
		},
		port: 9999
	});
});
gulp.task(\'watch\', function() {
	gulp.watch(\'./src/source/*.js\',[\'minify-js\']);
  	gulp.watch(\'./src/less/*.less\',[\'minify-css\']);	
});
if(argv.p){
	//product
	gulp.task(\'default\', sequence(\'minify-js\',\'minify-css\',\'minify-html\',\'browser-sync\'));
}else{
	//develop
	gulp.task(\'default\', sequence(\'clean\',\'minify-js\',\'minify-css\',\'watch\',\'browser-sync\'));
}

4.扩展

(1)上面一堆require看着好烦人,也很庞大。此处可以引入“gulp-load-plugins”插件

var gulpLoadPlugins = require(\'gulp-load-plugins\'),
      plugins = gulpLoadPlugins();

plugins.uglify();即可执行相应任务

(2)若某个文件夹下好多文件,那么watch监听时需要一一列举,可以目录写成json格式(例如src.source.*.js)。通过引入“fs”插件,用fs.freaddirSync()方法去读路径。循环即可,此处的实现纯属写js代码。

 

  

  

以上是关于gulp配置实现修改jscsshtml自动刷新的主要内容,如果未能解决你的问题,请参考以下文章

gulp+browserSync+nodemon 实现express 全端自动刷新的实践

Webpack构建多页应用Mpa:提取公共jscsshtml代码,实现图片字体单独打包,拆分多环境配置文件

gulpfile.js配置 实现ctrl+s自动编译和刷新浏览器

Gulp构建前端自动化工作流

Browsersync结合gulp和nodemon实现express全栈自动刷新

使用Gulp实现网页自动刷新:gulp-connect