美文网首页
前端构建工具Gulp 常用的gulpfile配置文件

前端构建工具Gulp 常用的gulpfile配置文件

作者: Amfishers | 来源:发表于2017-08-15 11:33 被阅读88次

    任务:
    • 检查Javascript
    • 编译Sass(或Less之类的)文件
    • 合并Javascript
    • 压缩并重命名合并后的Javascript

    gulp只有五个方法: task,run,watch,src,和dest,在项目根目录新建一个js文件并命名为gulpfile.js,把下面的代码粘贴进去:

    gulpfile.js

    // 引入 gulp
    var gulp = require('gulp'); 
    
    // 引入组件
    var jshint = require('gulp-jshint');
    var sass = require('gulp-sass');
    var concat = require('gulp-concat');
    var uglify = require('gulp-uglify');
    var rename = require('gulp-rename');
    
    // 检查脚本
    gulp.task('lint', function() {
        gulp.src('./js/*.js')
            .pipe(jshint())
            .pipe(jshint.reporter('default'));
    });
    
    // 编译Sass
    gulp.task('sass', function() {
        gulp.src('./scss/*.scss')
            .pipe(sass())
            .pipe(gulp.dest('./css'));
    });
    
    // 合并,压缩文件
    gulp.task('scripts', function() {
        gulp.src('./js/*.js')
            .pipe(concat('all.js'))
            .pipe(gulp.dest('./dist'))
            .pipe(rename('all.min.js'))
            .pipe(uglify())
            .pipe(gulp.dest('./dist'));
    });
    
    // 默认任务
    gulp.task('default', function(){
        gulp.run('lint', 'sass', 'scripts');
    
        // 监听文件变化
        gulp.watch('./js/*.js', function(){
            gulp.run('lint', 'sass', 'scripts');
        });
    });
    

    引入组件

    var gulp = require('gulp');

    var jshint = require('gulp-jshint');
    var sass = require('gulp-sass');
    var concat = require('gulp-concat');
    var uglify = require('gulp-uglify');
    var rename = require('gulp-rename');
    

    这一步,我们引入了核心的gulp和其他依赖组件,接下来,分开创建lint, sass, scripts 和 default这四个不同的任务。

    Lint任务

    gulp.task('lint', function() {
        gulp.src('./js/*.js')
            .pipe(jshint())
            .pipe(jshint.reporter('default'));
    });
    

    Link任务会检查js/目录下得js文件有没有报错或警告。

    Sass任务

    gulp.task('sass', function() {
        gulp.src('./scss/*.scss')
            .pipe(sass())
            .pipe(gulp.dest('./css'));
    });
    

    Sass任务会编译scss/目录下的scss文件,并把编译完成的css文件保存到/css目录中。

    Scripts 任务

    gulp.task('scripts', function() {
        gulp.src('./js/*.js')
            .pipe(concat('all.js'))
            .pipe(gulp.dest('./dist'))
            .pipe(rename('all.min.js'))
            .pipe(uglify())
            .pipe(gulp.dest('./dist'));
    });
    

    scripts任务会合并js/目录下得所有得js文件并输出到dist/目录,然后gulp会重命名、压缩合并的文件,也输出到dist/目录。

    default任务

    gulp.task('default', function(){
        gulp.run('lint', 'sass', 'scripts');
        gulp.watch('./js/*.js', function(){
            gulp.run('lint', 'sass', 'scripts');
        });
    });
    

    这时,我们创建了一个基于其他任务的default任务。使用.run()方法关联和运行我们上面定义的任务,使用.watch()方法去监听指定目录的文件变化,当有文件变化时,会运行回调定义的其他任务。

    现在,回到命令行,可以直接运行gulp任务了。

    gulp

    这将执行定义的default任务,换言之,这和以下的命令式同一个意思

    gulp default

    常用的配置文件

    var gulp = require('gulp'),                         //基础库
        clean = require('gulp-clean');                  //清空文件夹
        cssmin = require('gulp-minify-css'),            //css压缩
        uglify= require('gulp-uglify'),                 //js压缩
        rev = require('gulp-rev'),                      //更改版本号
        revCollector = require('gulp-rev-collector'),   //gulp-rev的插件,用于html模板更改引用路径
        jshint = require('gulp-jshint'),                //js静态代码检查
        replace = require('gulp-replace'),
        concat = require('gulp-concat');                //合并文件
    
    
    //要合并的js文件
    var xk_jsArray = [
            'src/js/jquery.pin.js',
            'src/js/swiper/swiper.jquery.min.js',
            'src/js/xk-layer.js',
            'src/js/xk-searchSelect.js',
            'src/js/xk-tagSearchSelect.js',
            'src/js/fileUploader/xk-uploadFile.js',
            'src/js/loading/loading.js',
            'src/js/instant_reminder.js',
            'src/js/submit-button-control.js',
            'src/js/move_box.js',
            'src/js/user/loginout.js',
            'src/js/totop.js',
            'src/js/tagsConfiguration.js',
            'src/js/infoLayer.js'
        ];
    
    var websocket_jsArray = [
        'src/js/imengine.js',
        'src/js/msgType.js',
        'src/js/dwr/dwr-exception.js',
        'src/js/system-msg/bulletin.js',
        'src/js/system-msg/no_read_message.js',
        'src/js/left_nav.js'
    ];    
    
    //要合并的css文件
    var cssArray = [
            'src/css/chat/chatnew.css',
            'src/css/skin/physician.css',
            'src/css/reset.css',
            'src/css/style.css',
            'src/css/followup/media_chat.css',
            'src/css/xk-drop.css',
            'src/css/swiper.css',
            'src/js/lib/umeditor/themes/default/css/umeditor.css',
            'src/css/fontawesome.css',
            'src/css/featureSpace.css'
        ];
    
    
    //清空目标文件夹
    gulp.task('clean',function(){
        //read参数为false表示不读取文件的内容
        return gulp.src('dist/',{read:false})
            .pipe(clean());
    });
    
    //将um编辑器库拷贝到目标文件夹
    gulp.task('copy_js_umeditor',function(){
        return gulp.src('src/js/lib/umeditor/**/*')
            .pipe(gulp.dest('dist/js/lib/umeditor'));
    });
    
    //将时间编辑器拷贝到目标文件夹
    gulp.task('copy_js_date',function(){
        return gulp.src('src/js/date-tool/**/*')
            .pipe(gulp.dest('dist/js/date-tool'));
    });
    
    
    
    gulp.task('replace_js_login',function(){
        gulp.src('src/js/user/login.js')
            .pipe(replace('bindLoginEvent();',''))
            .pipe(gulp.dest('src/js/user'));
    });
    
    
    
    gulp.task('replace_css_um',function(){
        gulp.src('src/js/lib/umeditor/themes/default/css/umeditor.css')
            .pipe(replace('../images/','../js/lib/umeditor/themes/default/images/'))
            .pipe(gulp.dest('src/js/lib/umeditor/themes/default/css'));
    });
    
    
    //合并css文件
    gulp.task('css_concat',['replace_css_um'],function(){
        return gulp.src(cssArray)
            .pipe(concat('xk.css'))
            .pipe(gulp.dest('src/css'))
    });
    
    //压缩css文件、为css文件添加上版本号
    gulp.task('css_min_version',['css_concat'],function(){
        return gulp.src('src/css/**/*.css')
            //压缩文件
            .pipe(cssmin({
                advanced: false,
                compatibility: 'ie7',
                keepBreaks: false
            }))
            //添加上版本号
            .pipe(rev())
            .pipe(gulp.dest('dist/css'))
            .pipe(rev.manifest())
            .pipe(gulp.dest('dist/manifest/css'));
    });
    
    //合并js文件
    gulp.task('js_concat_xk',['copy_js_umeditor','copy_js_date','replace_js_login'],function(){
        return gulp.src(xk_jsArray)
            .pipe(concat('xk.js'))
            .pipe(gulp.dest('src/js'));    
    
    });
    
    gulp.task('js_concat_websocket',function(){
        return gulp.src(websocket_jsArray)
            .pipe(concat('websocket.js'))
            .pipe(gulp.dest('src/js'));    
    
    });
    
    
    
    //压缩js文件,为js文件添加上版本号
    gulp.task('js_min_version',['js_concat_xk','js_concat_websocket'],function(){
        return gulp.src('src/js/**/*.js')
            //压缩文件
            .pipe(uglify())
            //添加上版本号
            .pipe(rev())
            .pipe(gulp.dest('dist/js'))
            .pipe(rev.manifest())
            .pipe(gulp.dest('dist/manifest/js'));
    });
    
    //为图片文件添加上版本号
    gulp.task('image_version',function(){
        return gulp.src('src/images/**/*.{png,jpg,gif,ico}')
            .pipe(rev())
            .pipe(gulp.dest('dist/images'))
            .pipe(rev.manifest())
            .pipe(gulp.dest('dist/manifest/images'));
    });
    
    //html模板更改引用路径
    gulp.task('html_replace',['css_min_version','js_min_version','image_version'],function(){
        return gulp.src(['dist/manifest/**/*.json','src/page/**/*.jsp'])
            .pipe(revCollector({
                replaceReved:true
            }))
            .pipe(gulp.dest('dist/page'));
    });
    
    
    //默认执行任务
    gulp.task('default',['clean'],function(){
        gulp.start('html_replace');
    });
    
    

    保存方便常规项目使用时翻阅,文章摘自:
    [segmentfault]

    相关文章

      网友评论

          本文标题:前端构建工具Gulp 常用的gulpfile配置文件

          本文链接:https://www.haomeiwen.com/subject/uhumrxtx.html