gulp自动化构建工具 都耳熟能详了
只是每个人的构建用法不太一样
我常用的也就这些js代码!
1 var gulp = require('gulp'), 2 runSequence = require('run-sequence'), 3 browserSync = require('browser-sync').create(), 4 del = require('del'), 5 compass = require('gulp-compass'), 6 ngAnnotate = require('gulp-ng-annotate'), 7 ngmin = require('gulp-ngmin'), 8 stripDebug = require('gulp-strip-debug'), 9 concat = require('gulp-concat'), 10 minifyCss = require('gulp-minify-css'), //压缩css 11 rename = require('gulp-rename'), 12 uglify = require('gulp-uglify'), 13 jshint = require('gulp-jshint'), 14 autoprefixer = require('gulp-autoprefixer'), 15 fileinclude = require('gulp-file-include'); //分离html 16 17 gulp.task('default', ['jshint'], function() { 18 // gulp.start('minifyjs'); 19 return runSequence(['clean'], ['build'], ['serve', 'watch'], ['fileinclude']); 20 }); 21 22 gulp.task('clean', function(callback) { 23 return del('./dist/', callback); 24 }); 25 26 gulp.task('build', function(callback) { 27 return runSequence(['compass','minifyjs','staticFiles'], callback); 28 }); 29 30 gulp.task('compass', function() { 31 return gulp.src('./src/**/*.scss') 32 .pipe(compass({ 33 config_file: './config.rb', 34 css: 'src/stylesheets', 35 sass: 'src/sass' 36 })) 37 .on('error', function(err) { 38 console.log(err); 39 this.emit('end'); 40 }) 41 .pipe(gulp.dest('./dist/stylesheets/')) 42 .pipe(autoprefixer({ 43 browsers: [ 44 'last 22 versions', 45 'Android >= 4.0', 46 'last 5 Chrome versions', 47 'last 5 Explorer versions', 48 'last 3 Safari versions', 49 'Firefox >= 20', 50 'iOS 7', 51 'Firefox ESR', 52 'Explorer >= 8', 53 'Opera >= 42', 54 'Safari >= 8', 55 'last 5 FirefoxAndroid versions', 56 'last 5 ChromeAndroid versions', 57 'last 5 ExplorerMobile versions' 58 ], 59 cascade: false 60 })) 61 .pipe(gulp.dest('./dist/stylesheets/')) 62 .pipe(rename({ suffix: '.min' })) 63 //压缩样式文件 64 .pipe(minifyCss({ outSourceMap: false })) 65 //输出压缩文件到指定目录 66 .pipe(gulp.dest('./dist/stylesheets/')); 67 }); 68 69 // gulp.task('testAutoFx', function() { 70 // gulp.src('src/stylesheets/main.css') 71 // .pipe(autoprefixer({ 72 // browsers: ['last 2 versions', 'Android >= 4.0'], 73 // cascade: true, //是否美化属性值 默认:true 像这样: 74 //-webkit-transform: rotate(45deg); 75 // transform: rotate(45deg); 76 // remove: true //是否去掉不必要的前缀 默认:true 77 // })) 78 // .pipe(gulp.dest('./dist/stylesheets/')); 79 // }); 80 81 //合并压缩js 82 gulp.task('minifyjs', function() { 83 return gulp.src('./src/javascripts*/**/*.js') //js代码校验 84 .pipe(concat('main.js')) //js代码合并 main.js 85 .pipe(gulp.dest('./dist/javascripts/')) //整合后的输出路径 86 .pipe(rename({ suffix: '.min' })) ////给文件添加.min后缀 87 .pipe(ngAnnotate()) 88 .pipe(ngmin({ dynamic: false })) //Pre-minify AngularJS apps with ngmin 89 .pipe(stripDebug()) //除去js代码中的console和debugger输出 90 .pipe(uglify({ outSourceMap: false })) //压缩脚本文件 91 .pipe(gulp.dest('./dist/javascripts/')); //输出压缩文件到指定目录 92 }); 93 94 gulp.task('fileinclude', function() { 95 // 适配page中所有文件夹下的所有html,排除page下的include文件夹中html 96 return gulp.src(['src/**/*.html', '!src/include/**.html']) 97 .pipe(fileinclude({ 98 prefix: '@@', 99 basepath: '@file' 100 })) 101 .pipe(gulp.dest('./dist/')); 102 }); 103 104 105 gulp.task('jshint', function() { 106 return gulp.src('./src/javascripts/**/*.js') 107 .pipe(jshint()) 108 .pipe(jshint.reporter('default')); 109 }); 110 111 gulp.task('staticFiles', function() { 112 return gulp.src([ 113 './src/**/*.html', 114 './src/images*/**/*.*', 115 './src/javascripts*/**/*.js', 116 './src/stylesheets*/**/*.css', 117 './src/framework*/*.*' 118 ]) 119 .pipe(gulp.dest('./dist/')); 120 }) 121 122 gulp.task('serve', function() { 123 browserSync.init({ 124 server: './dist', 125 port: 8888 126 }); 127 }); 128 129 gulp.task('reload', function() { 130 return browserSync.reload(); 131 }); 132 133 gulp.task('watch', function() { 134 return gulp.watch([ 135 './src/**/*.html', 136 './src/**/*.scss', 137 './src/**/*.js' 138 ], function() { 139 return runSequence(['build'], ['reload'], ['minifyjs']); 140 }) 141 }); 142 143 144 /** 145 * task这个API用来创建任务,在命令行下可以输入 gulp test 来执行test的任务。 146 * watch这个API用来监听任务。 147 * src这个API设置需要处理的文件的路径,可以是多个文件以数组的形式[main.scss, vender.scss],也可以是正则表达式/** /*.scss。 148 * dest这个API设置生成文件的路径,一个任务可以有多个生成路径,一个可以输出未压缩的版本,另一个可以输出压缩后的版本。 149 */