标签:根目录 files local 启动服务 如何 现在 内容 lock 文件的
原文地址:http://www.ybao.org/book/gulp/828.html
eg:每次修改代码都要做的编译ES6、sass、压缩html这些重复性工作。gulp脚本就是为了减少重复性工作而做的工作。
Grunt频繁的IO操作读写
读取A --> A.a() --> 写A --> 读取A --> A.b() --> 写A --> 读取A --> A.c() --> 写A --> complete/watch...
gulp是将项目任务流程以stream(流)的形式来做管道化处理
读取A并转为流信息 --> A.a() --> A.b() --> A.c() --> 写A --> complete/watch...
"流":读取文件时,不按常规那样把文件一口气写入内存中,而是把文件转为数据流,收到多少数据就处理多少数据,像经过竹筒的涓涓流水那样,有水源过来了就马上处理后再送出去,知道水源全部流过该竹筒。
gulp走的是递归编译的解析方式,有助于项目优化的健壮性。
比如:我们使用sass来编写样式,其中b.scss引入了_a.scss文件,如果我们修改了_a.scss的内容,gulp会即时更新b.scss对应的b.css编译文件,但Grunt是基于缓存机制的,故不会重新编译b.scss文件,导致问题。
var gulp = require("gulp");
gulp.task(‘default‘,function(){console.log("xxx")});
gulp //运行默认任务
gulp 任务名 //运行特定任务
参数:
options.read:默认值为true,若设置为false,那么file.contents会返回空值null,也就是并不会去读取文件。
options.base:String,将会加在glob之前。
**匹配路径中的0个或多个目录及子目录,需要单独出现,即它左右不能有其他东西,如果出现为末尾,也能匹配文件。
[...]匹配方括号中出现的字符中的任意一个
gulp.src([‘js/.js‘,‘css/.css‘,‘*.html‘]);
使用数组的方式可以很方便的使用排除模式,在数组中的单个匹配模式前加上!即是排除模式,但是这个不能用在数组的第一个元素中。
options.mode:String,默认为0777.八进制权限字符,用以定义所有在输出目录中所创建的目录的权限。
gulp.task("myTask",["array","task","name"],function(){...});
方案一:在异步操作完成后执行一个回调函数来通知gulp这个异步任务已经完成,这个回调函数就是任务函数的第一个参数。
gulp.task("one",function(callback){
setTimeout(function(){
console.log("one is done");
callback(); //执行回调函数,表示这个异步任务已经完成
},5000);
})
gulp.task("two",["one"],function(){
console.log("two is done");
});
方案二:定义任务时返回一个流对象。适用于任务就是操作gulp.src获取到的流的情况。
gulp.task("one",function(){
var stream = gulp.src("js/**.js")
.pipe(dosomething())
.pipe(gulp.dest(‘build‘));
return stream;
});
gulp.task("two",["one"],function(){
console.log("two is done");
});
方案三:返回一个promise对象
var Q = require("q"); //一个著名的异步处理的库
gulp.task("one",function(){
var deferred = Q.defer();
setTimeout(function(){
deferred.resolve();
},5000);
return deferred.promise;
});
gulp.task("two",["one"],function(){
console.log("two is done");
});
gulp.task("uglify",function(){
//dosomething;
});
gulp.task("reload",function(){
//dosomething;
});
gulp.watch("js/**.js",["uglify","reload"]);
cb参数时一个函数。每当监视的文件发生变化时,就会调用这个函数,并且回给传入一个对象,该对象包含了文件变化的一些信息,type属性为变化的类型,added,changed,deleted;path属性是发生变化的文件的路径。
gulp.watch("js/**/*.js",function(event){
console.log(event.type);
console.log(event.path);
});
var gulp = require("gulp"),
uglify = require("gulp-uglify");
gulp.task("minify-js",function(){
gulp.src("js/*.js") //获取文件流
.pipe(uglify()) //压缩js
.pipe(gulp.dest(‘dist/js‘)); //输出压缩后的js
});
var gulp = require("gulp"),
rename = require("gulp-rename"),
uglify = require("gulp-uglify");
gulp.task("rename",function(){
gulp.src("js/jquery.js")
.pipe(uglify())
.pipe(rename("jquery.min.js"))
.pipe(gulp.dest(‘js‘));
})
var gulp = require("gulp"),
monifyCss = require("gulp-minify-css");
gulp.task("minify-css",function(){
gulp.src("css/*.css")
.pipe(minifyCss())
.pipe(gulp.dest(‘dist/css‘));
});
var gulp = require(‘gulp‘),
minifyHtml = require("gulp-minify-html");
gulp.task(‘minify-html‘, function () {
gulp.src(‘html/*.html‘) // 要压缩的html文件
.pipe(minifyHtml()) //压缩
.pipe(gulp.dest(‘dist/html‘));
});
var gulp = require("gulp"),
jshint = require("gulp-jshint");
gulp.task("jsLint",function(){
gulp.src("js/*.js")
.pipe(jshint())
.pipe(jshint.reporter()); //输出检查结果
});
var gulp = require("gulp"),
concat = require("gulp-concat");
gulp.task("concat",function(){
gulp.src("js/*.js")
.pipe(concat("all.js"))
.pipe(gulp.dest("dist/js"));
});
var gulp = require("gulp");
var imagemin = require("gulp-imagemin");
var imagemin = require("imagemin-pngquant");
gulp.task("default",function(){
return gulp.src("src/images/*")
.pipe(imagemin({
progressive:true,
use:[pngquant()] //使用pngquant来压缩png图片
}))
.pipe(gulp.dest("dist"));
});
var gulp = require("gulp"),
less = require("gulp-less"),
livereload= require("gulp-livereload");
gulp.task("less",function(){
gulp.src("less/*.less")
.pipe(less())
.pipe(gulp.dest("css"))
.pipe(livereload());
});
gulp.task("watch",function(){
livereload.listen();
gulp.watch("less/*.less",["less"]);
});
var gulp = require("gulp"),
less = require("gulp-less");
gulp.task("compile-less",function(){
gulp.src("less/*.less")
.pipe(less())
.pipe(gulp.dest("dis/css"));
});
var gulp = require("gulp"),
sass = require("gulp-sass");
gulp.task("compile-sass",function(){
gulp.src("sass/*.sass")
.pipe(sass())
.pipe(gulp.dest("dis/css"));
});
var gulp = require("gulp");
var plugins = require("gulp-load-plugins")();
// --files路径是相对于运行该命令的项目
browser-sync start --server --files "css/*.css"
browser-sync start --server --files "**/*.css,**/*.html"
如果您已经有其他本地服务器环境PHP或类似的,您需要使用代理模式。
BrowserSync将通过代理URL(localhost:3000)来查看您的网站。
browser-sync start --proxy "主机名" "css/.css"
在本地创建了一个PHP服务器环境,并通过绑定BrowserSync.cn来访问本地服务器,使用一下命令方式,BrowserSync将提供一个新的地址localhost:3000来访问Browsersync.cn,并监听其css目录下的所有css文件。
browser-sync start --proxy "Browsersync.cn" "css/.css"
var gulp = require("gulp");
var browserSync = require("browser-sync").create();
//静态服务器
gulp.task("browser-sync",function(){
browserSync.init({
server:{
baseDir:"./"
}
});
});
//代理
gulp.task("browser-sync",function(){
browserSync.init({
proxy:"你的域名或IP"
});
});
var gulp = require("gulp"),
var browserSync = require("browser-sync").create();
var sass = require("gulp-sass");
var reload = browserSync.reload;
//静态服务器+监听scss/html文件
gulp.task("server",["sass"],function(){
browserSync.init({
server:"./app"
});
gulp.watch("app/scss/*.scss",["sass"]);
gulp.watch("app/*.html").on("change",reload);
});
//scss编译后的css将注入到浏览器里实现更新
gulp.task("sass",function(){
return gulp.src("app/scss/*.scss")
.pipe(sass())
.pipe(gulp.dest("app/css"))
.pipe(reload({stream:true}));
});
gulp.task("default",["server"]);
gulp.task("js",function(){
return gulp.src("js/*.js")
.pipe(browserify())
.pipe(uglify())
.pipe(gulp.dest("dist/js"))
});
//创建一个任务确保js任务完成之前能够持续响应
//浏览器重载
gulp.task("js-watch",["js"],browserSync.reload);
//使用默认任务启动BrowserSync,监听JS文件
gulp.task("server",["js"],function(){
//从这个项目的根目录启动服务器
browserSync({
server:{
baseDir:"./"
}
});
//添加browserSync.reload到任务队列里
//所有的浏览器重载后任务完成
gulp.watch("js/*.js",["js-watch"]);
});
//使用变量引用reload方法
var reload = browserSync.reload;
//编译SASS&自动注入到浏览器
gulp.task("sass",function(){
return gulp.src("scss/style.scss")
.pipe(sass({includePaths:["scss"]}))
.pipe(gulp.dest("css"))
.pipe(reload({stream:true}));
})
//监听scss和html文件,当文件发生变化后做些什么
gulp.task("server",["sass"],function(){
browserSync({
server:{
baseDir:"./"
}
})
gulp.watch("scss/*.scss",["sass"]);
gulp.watch("*.html").on("change",browserSync.reload);
})
标签:根目录 files local 启动服务 如何 现在 内容 lock 文件的
原文地址:https://www.cnblogs.com/nanhuaqiushui/p/8997964.html