gulp记录
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记录的更多相关文章
- 前端自动化构建工具gulp记录
一.安装 1)安装nodejs 通过nodejs的npm安装gulp,插件也可以通过npm安装.windows系统是个.msi工具,只要一直下一步即可,软件会自动在写入环境变量中,这样就能在cmd命令 ...
- 前端构建工具gulp使用
前端自动化流程工具,用来合并文件,压缩等. Gulp官网 http://gulpjs.com/ Gulp中文网 http://www.gulpjs.com.cn/ Gulp中文文档 https://g ...
- (转载)前端构建工具gulp使用
前端构建工具gulp使用 前端自动化流程工具,用来合并文件,压缩等. Gulp官网 http://gulpjs.com/ Gulp中文网 http://www.gulpjs.com.cn/ Gulp中 ...
- 前端构建工具gulp
前端构建工具gulp使用 前端自动化流程工具,用来合并文件,压缩等. Gulp官网 http://gulpjs.com/ Gulp中文网 http://www.gulpjs.com.cn/ Gul ...
- 前端构建工具gulp使用 (转)
http://www.cnblogs.com/starof/p/5194622.html 前端自动化流程工具,用来合并文件,压缩等. Gulp官网 http://gulpjs.com/ Gulp中文网 ...
- H5项目开发分享——用Canvas合成文字
以前曾用Canvas合成.裁剪.图片等<用H5中的Canvas等技术制作海报>.这次用Canvas来画文字. 下图中"老王考到驾照后"这几个字是画在Canvas上的,与 ...
- 小身材大用途,用PrimusUI驾驭你的页面
“PrimusUI”是自己在借鉴了如今网上很多开源的UI库,再经过自己整理加工的一个简单代码集合. 每个功能块的CSS代码都很少,力求简单易懂,低门槛,代码可根据自己实际情况轻易修改,改到符合自己场景 ...
- 用CSS3动画,让页面动起来
以前就听说过有个库,叫animate.css,但是自己并没有在实际项目中使用过,这次正好要做个招聘页面,得以利用一下这个库,在经常会卡顿的UC浏览器中也能流畅执行. 扫描下面的二维码,可以看到在线的d ...
- PrimusUI
小身材大用途,用PrimusUI驾驭你的页面 “PrimusUI”是自己在借鉴了如今网上很多开源的UI库,再经过自己整理加工的一个简单代码集合. 每个功能块的CSS代码都很少,力求简单易懂,低门槛,代 ...
随机推荐
- 用命令行执行ROBOT FRAMEWORK
除了在ride中执行用例,我们也可以通过命令行的形式执行用例. 1.执行一整个项目 pybot+项目路径 2.执行某个测试集 pybot+测试集的路径 3.执行某个测试集里面的某个用例 pybot - ...
- 用汇编的角度剖析c++的virtual
多态是c++的关键技术,背后的机制就是有一个虚函数表,那么这个虚函数表是如何存在的,又是如何工作的呢? 当然不用的编译器会有不同的实现机制,本文只剖析vs2015的实现. 单串继承 首先看一段简单的代 ...
- linux uart驱动——uart原理(一)
UART(Universal Asynchronous Receiver and Transmitter)通用异步收发器(异步串行通信口),是一种通用的数据通信协议,它包括了RS232.RS499.R ...
- kvm&vnc 简单安装shell脚本
#!/bin/bash # created on 2014/7/15 #author : derrick.jiang (Email: derrick.jiang.maichuang.net) echo ...
- JavaScript -- JavaScript高级程序设计
/* 基本类型 Undefined, Null, Boolean, Number, String. 复杂类型 Object 它是所有对象的基础类型. 引用类型 Object 创建:new Ojbect ...
- 【Android】第三方库使用的问题集
Google/百度地图Key的获取 百度地图UnsatisfiedLinkError错误 async-http-client中的FATAL EXCEPTION Google/百度地图Key的获取 无论 ...
- Spark源代码分析之六:Task调度(二)
话说在<Spark源代码分析之五:Task调度(一)>一文中,我们对Task调度分析到了DriverEndpoint的makeOffers()方法.这种方法针对接收到的ReviveOffe ...
- 兔子的晚会 2016Vijos省选集训 day1
兔子的晚会 (xor.c/pas/cpp)============================= 很久很久之前,兔子王国里居住着一群兔子.每到新年,兔子国王和他的守卫总是去现场参加晚会来欢庆新年. ...
- EasyNVR H5无插件摄像机直播解决方案前端解析之:如何在播放界面添加实时云台控制界面
如何在播放器上加一个云台控制界面 问题: 对于实时直播的视频播放, 由于播放页面客观样式要求(一个播放器占据了整个页面),因此很难找出很合理的空间来放置其他功能按钮的位置(比如配合实时是平的云台控制界 ...
- Entity Framework 4.1:多对多的关系
这篇文章讨论多对多的关系. 让我们从最简单的例子开始.我们让 EF4.1 来推断表的映射.我在订单和雇员之间建模多对多的关系. )] publicstring CustomerName { get; ...