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 });