前言css
总的来讲,玩gulp的流程是这样的:node
安装nodejs -> 全局安装gulp -> 项目安装gulp以及gulp插件 -> 配置gulpfile.js -> 运行任务git
说实在的,我并非很清楚gulp是干什么的,可是每一个人都说好,出于好奇心,忍不住就来研究一下,因此,搞清楚这个流程仍是颇有必要的。github
基本安装npm
安装gulp以前咱们须要安装nodejs的环境,检测可以正常使用npm后,咱们用npm对gulp进行一次全局安装json
npm install gulp -g
随便在哪一个路径下面均可以进行全局安装gulp
安装好了之后咱们创建一个test做为项目主路径,而后在cmd里cd到这个路径用npm对gulp进行依赖安装api
npm install gulp --save-dev
完过后发现项目路径下多了一个文件夹缓存
说明安装成功了sass
忍不住点进去会发现有一个package.json ,目前我暂时还不知道是干吗的,只不过看网上不少人说这玩意儿颇有用,先看看长什么样子老是好的。
插件安装
要使用gulp就必须使用gulp的插件,如下是我在网上搜索到的gulp插件:
sass的编译(gulp-ruby-sass)
自动添加css前缀(gulp-autoprefixer)
压缩css(gulp-minify-css)
js代码校验(gulp-jshint)
合并js文件(gulp-concat)
压缩js代码(gulp-uglify)
压缩图片(gulp-imagemin)
自动刷新页面(gulp-livereload)
图片缓存,只有图片替换了才压缩(gulp-cache)
更改提醒(gulp-notify)
清除文件(del)
至于怎么安装嘛,仍是要靠npm,能够一次性安装多个,module name能够无限累加。
npm install gulp-ruby-sass gulp-autoprefixer gulp-minify-css gulp-jshint gulp-concat gulp-uglify gulp-imagemin gulp-notify gulp-rename gulp-livereload gulp-cache gulp-less del --save-dev
npm install gulp-ruby-sass --save-dev npm install gulp-autoprefixer --save-dev npm install gulp-minify-css --save-dev npm install gulp-jshint --save-dev npm install gulp-concat --save-dev npm install gulp-uglify --save-dev npm install gulp-imagemin --save-dev npm install gulp-notify --save-dev npm install gulp-rename --save-dev npm install gulp-livereload --save-dev npm install gulp-cache --save-dev npm install del --save-dev npm instal gulp-less --save-dev
路径仍是在项目路径下
安装完成后会发如今项目下的gulp文件夹多出了许多插件的文件夹
加载插件
插件安装完成了之后就须要使用,使用以前必须先加载,咱们使用require的方法来加载。
在此以前咱们先要在项目的根路径下创建一个名为gulpfile.js的文件,别问我为何,我也不知道。
而后咱们能够在里面写入咱们引用插件的代码,最简单的代码以下:
var gulp = require('gulp'); gulp.task('default', function() { // 将你的默认的任务代码放在这 });
咱们把咱们刚才安装的插件全都加载进来
var gulp = require('gulp'), sass = require('gulp-ruby-sass'), autoprefixer = require('gulp-autoprefixer'), minifycss = require('gulp-minify-css'), jshint = require('gulp-jshint'), uglify = require('gulp-uglify'), imagemin = require('gulp-imagemin'), rename = require('gulp-rename'), concat = require('gulp-concat'), notify = require('gulp-notify'), cache = require('gulp-cache'), livereload = require('gulp-livereload'), del = require('del');
而后咱们在cmd里输入gulp命令,结果以下
这个名为default的task没有作任何事情,具体要作一些压缩之类的操做还得查阅更多的API。
若是想单独执行一个task,就直接输入"gulp <task name>",好比咱们想单独执行default这个task就能够这样
gulp default
到这里,咱们的gulp环境就部署好了。
附:gulp插件github地址或API地址
sass的编译(gulp-ruby-sass) https://github.com/sindresorhus/gulp-ruby-sass
自动添加css前缀(gulp-autoprefixer) https://github.com/Metrime/gulp-autoprefixer
压缩css(gulp-minify-css) https://github.com/murphydanger/gulp-minify-css
js代码校验(gulp-jshint) https://github.com/spalger/gulp-jshint
合并js文件(gulp-concat) https://github.com/contra/gulp-concat
压缩js代码(gulp-uglify) https://github.com/terinjokes/gulp-uglify
压缩图片(gulp-imagemin) https://github.com/sindresorhus/gulp-imagemin
自动刷新页面(gulp-livereload) https://github.com/vohof/gulp-livereload
图片缓存,只有图片替换了才压缩(gulp-cache) https://github.com/jgable/gulp-cache
更改提醒(gulp-notify) https://github.com/mikaelbr/gulp-notify
清除文件(del) https://www.npmjs.com/package/del
漏了一个地方,我加上:
在项目根目录下建立gulpfile.js文件,而后编写以下代码(最经常使用的代码),这些代码没什么好解释的,具体能够参考gulp的api
// 获取 uglify 模块(用于压缩 JS)
var uglify = require('gulp-uglify');
var cssUglify = require('gulp-minify-css');
var imageMin = require('gulp-imagemin');
// 压缩 js 文件
// 在命令行使用 gulp script 启动此任务
gulp.task('script', function() {
// 1. 找到文件
gulp.src('js/*.js')
// 2. 压缩文件
.pipe(uglify({ mangle: false }))
// 3. 另存压缩后的文件
.pipe(gulp.dest('dist/js'))
})
gulp.task('auto',function(){
gulp.watch('js/*.js',['script']);
gulp.watch('css/*.css', ['css']);
gulp.watch('images/*.*', ['image'])
})
gulp.task('css',function(){
gulp.src('css/*.css')
.pipe(cssUglify())
.pipe(gulp.dest('dist/css'))
})
gulp.task('image',function(){
gulp.src('images/*.*')
.pipe(imageMin({progressive: true}))
.pipe(gulp.dest('dist/images'))
})
gulp.task('default',['script','auto','css','image']
)
实际的项目确定没这么简单,想一想咱们通常不可能对某几个文件操做,应该是对一批文件操做,那样的涉及到文件匹配的问题了,暂时不展开了。