gulp搭建框架,起前端服务步骤

gulp创建项目
1、新建项目文件夹,  npm init
2、全剧安装gulp        npm install -g gulp
3、修改package.json添加
package.json
1 "devDependencies": {
2     "gulp": "^3.9.1", //本地gulp
3     "gulp-imagemin": "^2.3.0", //图片压缩
4     "gulp-minify-css": "^1.2.4", //css压缩
5     "gulp-uglify": "^1.5.3", //js压缩
6     "gulp-util": "^3.0.7", //控制台代码着色
7     "gulp-watch-path": "^0.1.0", //文件很多时编辑哪个哪个压缩,不会全部压缩(获取改变的文件的src和dest路径)
8     "stream-combiner2": "^1.1.1" //有些 gulp 任务编译出错会终止       gulp.watch,使用 gulp-watch-path 配合stream-combiner2 可避免这种情况
9 }

4、执行npm install
5、新建gulpfile.js文件,gulp功能如下
  gulp一共五中方法:
  gulp.task()——新建任务
  gulp.src()——获取文件源地址
  gulp.dest()——文件输出地址
  gulp.run()——运行任务
  gulp.watch()——监听文件修改
6、修改gulpfile.js文件(根据项目架构设置路径)目的:起动前端服务,将app中的css、js、html、等文件打包到dist文件中
  
  1 //引入插件变量
  2 var gulp = require('gulp'),  
  3     uglify = require('gulp-uglify'),  
  4     minifycss = require('gulp-minify-css'),  
  5     imgmin = require('gulp-imagemin'),  
  6     gutil = require('gulp-util'),  
  7     watchPath = require('gulp-watch-path'),  
  8     combiner = require('stream-combiner2'); 
  9 const browserSync = require('browser-sync');
 10 
 11 //新建代码着色与显示错误日志方法,这个方法用到了gulp-util和stream-combiner2插件
 12 var handleError=function(err){  
 13     console.log('\n');  
 14     gutil.log('fileName: '+gutil.colors.red(err.fileName));  
 15     gutil.log('lineNumber: '+gutil.colors.red(err.lineNumber));  
 16     gutil.log('message: ' + err.message);  
 17     gutil.log('plugin: ' + gutil.colors.yellow(err.plugin));  
 18 };  
 19 
 20 //新建js批量压缩任务
 21 gulp.task('script',function(){//script时自定义的  
 22 //将文件的源路径和发布路径赋值给相应变量  
 23     var srcJsPath='js/*.js';  
 24     var destJsPath='dist/js/';  
 25     var combined = combiner.obj([  
 26             gulp.src(srcJsPath),//获取文件源地址  
 27             uglify(),//执行压缩  
 28             gulp.dest(destJsPath)//将压缩的文件发布到新路径  
 29         ]);  
 30     combined.on('error', handleError);//打印错误日志  
 31 });
 32 
 33 //图片打包
 34 gulp.task('images', () => {
 35   return gulp.src('app/images/**/*')
 36     //.pipe($.cache($.imagemin({
 37     //  progressive: true,
 38     //  interlaced: true,
 39     //  // don't remove IDs from SVGs, they are often used
 40     //  // as hooks for embedding and styling
 41     //  svgoPlugins: [{cleanupIDs: false}]
 42     //})))
 43     .pipe(gulp.dest('dist/images'));
 44 });
 45 
 46 //这种写法需要css目录下有很多css文件,只要改变了一个点击保存的时候gulp会把所有css文件都会压缩一遍,为了提高性能我们可以利用gulp-watch-path插件只压缩/发布修改的文件
 47 gulp.task('watchjs',function(){  
 48     gulp.watch('js/*.js',function(event){  
 49     var paths=watchPath(event,'js/','dist/js/');  
 50         //打印修改类型和路径  
 51         gutil.log(gutil.colors.green(event.type) + ' ' + paths.srcPath);  
 52         gutil.log('Dist: ' + paths.distPath);  
 53         //获取错误信息,继续执行代码  
 54         var combined = combiner.obj([  
 55                 gulp.src(paths.srcPath),  
 56                 uglify(),  
 57                 gulp.dest(paths.distDir)  
 58             ]);  
 59         combined.on('error', handleError);  
 60     });  
 61 }); 
 62 
 63 
 64 //编写default任务和监听任务
 65 //新建批量任务还是监听修改任务根据项目中实际需要去写,等我们写好很多任务之后就需要写入default中,default写好之后只需要在dos窗口写入gulp就可以自动执行任务
 66 gulp.task('default',function(){  
 67     //默认执行的方法,引号内的内容对应上面task写的内容  
 68     gulp.run('watchjs','css','images');  
 69     //监控js  
 70     gulp.watch('js/*.js',['watchjs']);  
 71     //监控css  
 72     gulp.watch('css/*.css',['css']);  
 73     //监控img  
 74     gulp.watch('images/*.*',['images']);  
 75 });
 76 
 77 gulp.task('serve', [], () => {
 78   browserSync({
 79     notify: false,
 80     port: 3000,
 81     ghostMode: false,
 82     server: {
 83       baseDir: ['app']
 84     },
 85     // middleware: [proxy('/api', {
 86     //   target: 'http://apidev.e.com',
 87     //   changeOrigin: true
 88     // })]
 89   });
 90 
 91   // gulp.watch([
 92   //   'app/*.html',
 93   //   'app/images/**/*'
 94   // ]).on('change', reload);
 95 
 96   // gulp.watch('app/styles/**/*.scss', ['styles']);
 97   // gulp.watch('app/scripts/helpers/tsf/**/*.scss', ['styles']);
 98   // gulp.watch('app/scripts/**/*.js', ['styles']);
 99   // gulp.watch('app/fonts/**/*', ['fonts']);
100   // gulp.watch('bower.json', ['wiredep', 'fonts']);
101 });
gulpfile.js

 

posted @ 2018-01-10 16:57  芒果有毒  阅读(335)  评论(0编辑  收藏  举报