首页 > 代码库 > gulp入门教程
gulp入门教程
第1步:安装Node
首先,最基本也最重要的是,我们需要搭建node环境。访问 nodejs.org,下载完成后直接运行程序,就一切准备就绪。npm会随着安装包一起安装,稍后会用到它。
为了确保Node已经正确安装,我们执行几个简单的命令。
1 node -v2 npm -v
如果这两行命令没有得到返回,可能node就没有安装正确,进行重装。
第2步:安装gulp
首先我们要全局安装一遍:
1 npm install -g gulp
运行时注意查看命令行有没有错误信息,安装完成后,你可以使用下面的命令查看gulp的版本号以确保gulp已经被正确安装。
1 gulp -v
接着我们要进去到项目的根目录再安装一遍
1 npm install gulp --save-dev
第3步:新建gulpfile.js文件
我们将要使用Gulp插件来完成我们以下任务:
- sass的编译(gulp-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)
安装这些插件需要运行如下命令:
1 npm install gulp-sass gulp-autoprefixer gulp-minify-css gulp-jshint gulp-concat gulp-uglify gulp-imagemin gulp-notify gulp-rename gulp-livereload gulp-cache --save-dev
更多插件可以看这里gulpjs.com/plugins/
接着我们要创建一个gulpfile.js在根目录下,gulp只有四个API: task
,watch
,src
,和 dest
task
这个API用来创建任务,在命令行下可以输入gulp test
来执行test的任务。watch
这个API用来监听任务。src
这个API设置需要处理的文件的路径,可以是多个文件以数组的形式[main.scss, vender.scss]
,也可以是正则表达式/**/*.scss
。dest
这个API设置生成文件的路径,一个任务可以有多个生成路径,一个可以输出未压缩的版本,另一个可以输出压缩后的版本。
3.1 加载插件:
1 // Load plugins 2 var gulp = require(‘gulp‘), 3 sass = require(‘gulp-sass‘), 4 autoprefixer = require(‘gulp-autoprefixer‘), 5 minifycss = require(‘gulp-minify-css‘), 6 jshint = require(‘gulp-jshint‘), 7 uglify = require(‘gulp-uglify‘), 8 imagemin = require(‘gulp-imagemin‘), 9 rename = require(‘gulp-rename‘),10 concat = require(‘gulp-concat‘),11 notify = require(‘gulp-notify‘),12 cache = require(‘gulp-cache‘),13 livereload = require(‘gulp-livereload‘);
3.2 建立任务:
3.2.1 编译sass、自动添加css前缀和压缩
首先我们编译sass,添加前缀,保存到我们指定的目录下面,还没结束,我们还要压缩,给文件添加 .min
后缀再输出压缩文件到指定目录,最后提醒任务完成了:
1 // Styles任务 2 gulp.task(‘styles‘, function() { 3 //编译sass 4 return gulp.src(‘stylesheets/main.scss‘) 5 .pipe(sass()) 6 //添加前缀 7 .pipe(autoprefixer(‘last 2 version‘, ‘safari 5‘, ‘ie 8‘, ‘ie 9‘, ‘opera 12.1‘, ‘ios 6‘, ‘android 4‘)) 8 //保存未压缩文件到我们指定的目录下面 9 .pipe(gulp.dest(‘stylesheets‘))10 //给文件添加.min后缀11 .pipe(rename({ suffix: ‘.min‘ }))12 //压缩样式文件13 .pipe(minifycss())14 //输出压缩文件到指定目录15 .pipe(gulp.dest(‘assets‘))16 //提醒任务完成17 .pipe(notify({ message: ‘Styles task complete‘ }));18 });
3.2.2 js代码校验、合并和压缩
1 // Scripts任务 2 gulp.task(‘scripts‘, function() { 3 //js代码校验 4 return gulp.src(‘javascripts/*.js‘) 5 .pipe(jshint()) 6 .pipe(jshint.reporter(‘default‘)) 7 //js代码合并 8 .pipe(concat(‘all.js‘)) 9 //给文件添加.min后缀10 .pipe(rename({ suffix: ‘.min‘ }))11 //压缩脚本文件12 .pipe(uglify())13 //输出压缩文件到指定目录14 .pipe(gulp.dest(‘assets‘))15 //提醒任务完成16 .pipe(notify({ message: ‘Scripts task complete‘ }));17 });
3.2.3 图片压缩
1 // Images2 gulp.task(‘images‘, function() {3 return gulp.src(‘images/*‘)4 .pipe(cache(imagemin({ optimizationLevel: 3, progressive: true, interlaced: true })))5 .pipe(gulp.dest(‘images‘))6 .pipe(notify({ message: ‘Images task complete‘ }));7 });
3.2.4 事件监听
1 // Watch 2 gulp.task(‘watch‘, function() { 3 // Watch .scss files 4 gulp.watch(‘stylesheets/*.scss‘, [‘styles‘]); 5 // Watch .js files 6 gulp.watch(‘javascripts/*.js‘, [‘scripts‘]); 7 // Watch image files 8 gulp.watch(‘images/*‘, [‘images‘]); 9 // Create LiveReload server10 livereload.listen();11 // Watch any files in assets/, reload on change12 gulp.watch([‘assets/*‘]).on(‘change‘, livereload.changed);13 });
完整代码:
1 /*! 2 * gulp 3 * $ npm install gulp-sass gulp-autoprefixer gulp-minify-css gulp-jshint gulp-concat gulp-uglify gulp-imagemin gulp-notify gulp-rename gulp-livereload gulp-cache --save-dev 4 */ 5 // Load plugins 6 var gulp = require(‘gulp‘), 7 sass = require(‘gulp-sass‘), 8 autoprefixer = require(‘gulp-autoprefixer‘), 9 minifycss = require(‘gulp-minify-css‘),10 jshint = require(‘gulp-jshint‘),11 uglify = require(‘gulp-uglify‘),12 imagemin = require(‘gulp-imagemin‘),13 rename = require(‘gulp-rename‘),14 concat = require(‘gulp-concat‘),15 notify = require(‘gulp-notify‘),16 cache = require(‘gulp-cache‘),17 livereload = require(‘gulp-livereload‘);18 // Styles19 gulp.task(‘styles‘, function() {20 return gulp.src(‘stylesheets/main.scss‘)21 .pipe(sass())22 .pipe(autoprefixer(‘last 2 version‘, ‘safari 5‘, ‘ie 8‘, ‘ie 9‘, ‘opera 12.1‘, ‘ios 6‘, ‘android 4‘))23 .pipe(gulp.dest(‘stylesheets‘))24 .pipe(rename({ suffix: ‘.min‘ }))25 .pipe(minifycss())26 .pipe(gulp.dest(‘assets‘))27 .pipe(notify({ message: ‘Styles task complete‘ }));28 });29 // Scripts30 gulp.task(‘scripts‘, function() {31 return gulp.src(‘javascripts/*.js‘)32 .pipe(jshint())33 .pipe(jshint.reporter(‘default‘))34 .pipe(concat(‘all.js‘))35 .pipe(rename({ suffix: ‘.min‘ }))36 .pipe(uglify())37 .pipe(gulp.dest(‘assets‘))38 .pipe(notify({ message: ‘Scripts task complete‘ }));39 });40 // Images41 gulp.task(‘images‘, function() {42 return gulp.src(‘images/*‘)43 .pipe(cache(imagemin({ optimizationLevel: 3, progressive: true, interlaced: true })))44 .pipe(gulp.dest(‘images‘))45 .pipe(notify({ message: ‘Images task complete‘ }));46 });47 // Default task48 gulp.task(‘default‘, function() {49 gulp.start(‘styles‘, ‘scripts‘, ‘images‘);50 });51 // Watch52 gulp.task(‘watch‘, function() {53 // Watch .scss files54 gulp.watch(‘stylesheets/*.scss‘, [‘styles‘]);55 // Watch .js files56 gulp.watch(‘javascripts/*.js‘, [‘scripts‘]);57 // Watch image files58 gulp.watch(‘images/*‘, [‘images‘]);59 // Create LiveReload server60 livereload.listen();61 // Watch any files in assets/, reload on change62 gulp.watch([‘assets/*‘]).on(‘change‘, livereload.changed);63 });
第4步:运行
可以运行单独的任务,例如
1 gulp default2 gulp watch
也可以运行整个任务
1 gulp
总结
- 安装Node
- 安装gulp
- 新建gulpfile.js文件
- 运行
最后是我自己设置的项目文件路径
|--/assets/--------压缩后样式和脚本存放的目录|--/images/--------图片存放目录|--/javascripts/---脚本存放目录|--/stylesheets/---样式存放目录|--/plugin/--------插件存放目录|--gulpfile.js
gulp入门教程
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。