npm install gulp -g  //全局安装gulp
gulp -v  //此处若有问题,配置环境变量,npm config get prefix得到路径
npm init  //新建nodejs项目配置文件package.json,其中项目name、version、description为必填项

package.json

{
"name": "project",
"version": "1.0.0",
"description": "this is a test",
"main": "gulpfile.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"browser-sync": "^2.14.0",
"del": "^2.2.2",
"gulp": "^3.9.1",
"gulp-cache": "^0.4.5",
"gulp-clean-css": "^2.0.12",
"gulp-if": "^2.0.1",
"gulp-imagemin": "^3.0.3",
"gulp-less": "^3.1.0",
"gulp-minify-css": "^1.2.4",
"gulp-sass": "^2.3.2",
"gulp-uglify": "^2.0.0",
"gulp-useref": "^3.1.0",
"run-sequence": "^1.2.2"
}
}
npm install gulp --save-dev  //当前项目安装gulp,--save将保存配置信息至package.json,-dev保存至package.json的devDependencies节点
npm install gulp-sass --save-dev  //安装gulp-sass等等

配置gulpfile.js,这里的名字要和package.json的main指定的js文件对应起来

var gulp = require('gulp');//告知node去node_modules中查找gulp包,先局部查找,找不到就全局查找,找到赋予gulp变量我们就可以使用啦
var sass = require('gulp-sass');
var browserSync = require('browser-sync');
var useref = require('gulp-useref');
var uglify = require('gulp-uglify');
var gulpIf = require('gulp-if');
var cleanCSS = require('gulp-clean-css');
var imagemin = require('gulp-imagemin');
var cache = require('gulp-cache');
var del = require('del');
var runSequence = require('run-sequence'); gulp.task('task-name',function(){//task-name是给你任务起的名字,稍后运行gulp task-name将会执行后面的函数
console.log('Hello World');
}); gulp.task('sass', function(){
return gulp.src('src/sass/**/*.scss')//Gets all files ending with .scss in src/sass and children dirs
.pipe(sass()) // Using gulp-sass
.pipe(gulp.dest('src/sass-css'))//在执行命令之后将生成对应的css文件存放到相应路径,新添文件目录后重新编译下即可
.pipe(browserSync.reload({//每次css文件更改都刷新一下浏览器
stream: true
}))
});
//创建一个broswerSync任务,我们需要告知它,根目录在哪里
gulp.task('browserSync', function() {
browserSync({
server: {
baseDir: 'src'
}
})
}) //gulp.watch('src/sass/**/*.scss',['sass']); //通常我们监听的还不只是一个文件,把它变成一个任务:
// gulp.task('watch', function(){
// gulp.watch('src/sass/**/*.scss', ['sass']);
// // Other watchers
// }) //在watch任务之前告知Gulp,先把browserSync和Sass任务执行了再说
gulp.task('watch',['browserSync','sass'],function(){
gulp.watch('src/sass/**/*.scss', ['sass']);
// Other watchers
gulp.watch('src/**/*.html',browserSync.reload);//这些目录动了也刷新
gulp.watch('src/**/*.js',browserSync.reload);
}) // gulp.task('useref',function(){//合并
// return gulp.src('src/*.html')
// .pipe(useref())
// .pipe(gulp.dest('dist'));
// }); // 合并并压缩js
gulp.task('useref', function(){
return gulp.src('src/*.html')
.pipe(useref())//顺序!!
.pipe(gulpIf('*.js', uglify())) // Uglifies Javascript files
.pipe(gulp.dest('dist'));
});
// 压缩css
gulp.task('minify-css', function() {
return gulp.src('src/**/*.css')
.pipe(cleanCSS({compatibility: 'ie8'}))
.pipe(gulp.dest('dist'));
}); gulp.task('images', function(){
return gulp.src('src/images/**/*.+(png|jpg|gif|svg)')
.pipe(imagemin())
.pipe(gulp.dest('dist/images'))
}); gulp.task('images', function() {
return gulp.src('src/images/**/*.+(png|jpg|jpeg|gif|svg)')
// Caching images that ran through imagemin
.pipe(cache(imagemin({
interlaced: true,
})))
.pipe(gulp.dest('dist/images'))
}); // gulp.task('clean', function() {
// del('dist');
// }); gulp.task('clean:dist', function(callback){
return del(['dist/**/*', '!dist/images', '!dist/images/**/*'], callback)
}); // gulp.task('clean', function() {
// del('dist');
// }); gulp.task('clean', function(callback) {
del('dist');
return cache.clearAll(callback);
}) gulp.task('default', function (callback) {
runSequence(['sass','browserSync', 'watch'],
callback
)
}); gulp.task('build', function(callback) {
runSequence(
'clean:dist',
'sass',
['useref', 'images','minify-css'],
callback
)
})

gulp记录的更多相关文章

  1. 前端自动化构建工具gulp记录

    一.安装 1)安装nodejs 通过nodejs的npm安装gulp,插件也可以通过npm安装.windows系统是个.msi工具,只要一直下一步即可,软件会自动在写入环境变量中,这样就能在cmd命令 ...

  2. 前端构建工具gulp使用

    前端自动化流程工具,用来合并文件,压缩等. Gulp官网 http://gulpjs.com/ Gulp中文网 http://www.gulpjs.com.cn/ Gulp中文文档 https://g ...

  3. (转载)前端构建工具gulp使用

    前端构建工具gulp使用 前端自动化流程工具,用来合并文件,压缩等. Gulp官网 http://gulpjs.com/ Gulp中文网 http://www.gulpjs.com.cn/ Gulp中 ...

  4. 前端构建工具gulp

    前端构建工具gulp使用   前端自动化流程工具,用来合并文件,压缩等. Gulp官网 http://gulpjs.com/ Gulp中文网 http://www.gulpjs.com.cn/ Gul ...

  5. 前端构建工具gulp使用 (转)

    http://www.cnblogs.com/starof/p/5194622.html 前端自动化流程工具,用来合并文件,压缩等. Gulp官网 http://gulpjs.com/ Gulp中文网 ...

  6. H5项目开发分享——用Canvas合成文字

    以前曾用Canvas合成.裁剪.图片等<用H5中的Canvas等技术制作海报>.这次用Canvas来画文字. 下图中"老王考到驾照后"这几个字是画在Canvas上的,与 ...

  7. 小身材大用途,用PrimusUI驾驭你的页面

    “PrimusUI”是自己在借鉴了如今网上很多开源的UI库,再经过自己整理加工的一个简单代码集合. 每个功能块的CSS代码都很少,力求简单易懂,低门槛,代码可根据自己实际情况轻易修改,改到符合自己场景 ...

  8. 用CSS3动画,让页面动起来

    以前就听说过有个库,叫animate.css,但是自己并没有在实际项目中使用过,这次正好要做个招聘页面,得以利用一下这个库,在经常会卡顿的UC浏览器中也能流畅执行. 扫描下面的二维码,可以看到在线的d ...

  9. PrimusUI

    小身材大用途,用PrimusUI驾驭你的页面 “PrimusUI”是自己在借鉴了如今网上很多开源的UI库,再经过自己整理加工的一个简单代码集合. 每个功能块的CSS代码都很少,力求简单易懂,低门槛,代 ...

随机推荐

  1. 字符串各个字符ASCII值加5

    程序实现目标: 输入一个字符串,将其各个字符对应的ASCII值加5后,输出结果 程序要求:该字符串只包含小写字母,若其值加5后的字符值大于'z',将其转换成从a开始的字符. 分析:问题归结为三点: 1 ...

  2. aar格式

    aar包是Android Library Project的二进制公布包. 文件的扩展名是aar,并且maven包类型也应该是aar. 只是这文件本身就是一个简单的zip文件.里面有例如以下的内容: / ...

  3. wpf SplitButton

     SplitButton该控件除了本身Button 的功能外,还具有下拉菜单的功能,能够在按键右側加入下拉菜单控件: <SplitButton Content="..." ...

  4. 为什么阿里巴巴不建议在for循环中使用"+"进行字符串拼接

    字符串,是Java中最常用的一个数据类型了.关于字符串的知识,作者已经发表过几篇文章介绍过很多,如: Java 7 源码学习系列(一)--String 该如何创建字符串,使用" " ...

  5. Pandoc PDF 中文

    最近终于又决定(^_^)使用reStructuredText写文档了,输出PDF时的中文问题必须要解决下. 安装环境 sudo apt install texlive texlive-latex-ex ...

  6. PLSQL怎样导出oracle表结构

    tools->export tables 是导出表结构还有数据 tools->export user objects是导出表结构   可以用tools->export tables ...

  7. Docker入门系列4:命令行小结

    百度Baidu App Engine(BAE)平台也是以Docker作为其PaaS云基础. 目的就是为了解决以下问题: 1) 环境管理复杂: 从各种OS到各种中间件再到各种App,一款产品能够成功发布 ...

  8. 17 nginx连接memcached

    一:配置php扩展memcached wget http://memcached.googlecode.com/files/memcached-1.4.9.tar.gz # tar zvxf memc ...

  9. PowerBuilder -- Tab控件

    在tab中关闭窗口 Close(tab_1.getparent()) 调整tab中的控件的tab oder 鼠标右键tabpage_1,选择 Tab Order菜单.

  10. SQL时间戳的使用(转)

    一直对时间戳这个概念比较模糊,相信有很多朋友也都会误认为:时间戳是一个时间字段,每次增加数据时,填入当前的时间值.其实这误导了很多朋友. 1.基本概念 时间戳:数据库中自动生成的唯一二进制数字,与时间 ...