美文网首页
webpack & gulp

webpack & gulp

作者: 还是那个西瓜 | 来源:发表于2016-08-20 01:17 被阅读0次

    webpack是什么

    webpack是一个模块加载器兼打包工具。

    GULP是什么

    gulp 是一个自动任务运行器,它充分借鉴了Unix操作系统的管道思想。

    gulpfile.js

    gulpfile.js是Gulp的配置文件,下面是一个典型的gulpfile.js文件

    var gulp = require("gulp");
    var uglify = require("gulp-uglify");
    
    gulp.task('minify', function(){
        
        gulp.src('js/app.js')
            .pipe(uglify())
            .pipe(gulp.dest('build'))
        
    });
    

    上面代码中,gulpfile.js加载gulp和gulp-uglify模块之后,使用gulp模块的task方法指定任务minify。task方法有两个参数,第一个是任务名,第二个是任务函数。在任务函数中,使用gulp模块的src方法,指定所要处理的文件,然后使用pipe方法,将上一步的输出转为当前的输入,进行链式处理。

    task方法的回调函数使用了两次pipe方法,也就是说做了两种处理。第一种处理是使用gulp-uglify模块,压缩源码;第二种处理是使用gulp模块的dest方法,将上一步的输出写入本地文件,这里是build.js(代码中省略了后缀名js)。

    执行minify任务时,就在项目目录中执行下面命令就可以了。

    gulp minify
    

    Gulp 模块的方法

    src()

    gulp模块的src方法,用于产生数据流。它的参数表示所要处理的文件,这些指定的文件会转化为数据流。参数的写法一般有以下几种写法。

    • js/app.js: 指定准确的文件名。
    • js/*.js: 某个文件所有后缀名为js的文件。
    • js/**/*.js: 某个目录及所有子目录中的所有后缀名为js的文件。
    • !js/app.js:除了js/app.js 以外的所有文件。

    dest()

    dest方法把管道的输出写入文件,同时将这些输出继续输出,所以可以依次调用多次dest方法,将输出写入多个目录。如果有目录不存在,将会被新建。

    gulp.src('./client/templates/*.jade')
        .pipe(jade())
        .pipe(gulp.dest('./build/templates'))
        .pipe(minify())
        .pipe(gulp.dest('./build/minified_templates'));
    

    task()

    task方法用于定义具体的任务。它的第一个参数就是任务名,第二个参数就是人物函数。下面是一个简单的任务函数。

    gulp.task('greet', function() {
    
        console.log('hello world');
        
    });
    

    task 方法还可以指定按顺序运行的一组任务。

    gulp.task('build', ['css', 'js', 'imgs']);
    

    上面代码先指定build任务,它由css、js、imgs三个任务所组成,task方法会并发执行这三个任务。注意,由于每个任务都是异步调用,所以没有办法保证js任务的开始运行的时间,正是css任务运行结束。

    如果希望各个任务能严格按次序运行,可以把前一个任务写成后一个任务的依赖模块。

    gulp.task('css', ['greet'], function () {
        // Deal with CSS here
    });
    

    上面代码表明,css任务依赖greet任务,所以css一定会在greet运行完成后再运行。

    如果一个任务的名字为default,就表明它是“默认任务”,在命令行直接输入gulp命令,就会运行该任务。

    gulp.task('default', function () {
        // Your default task
    });
    
    // 或者
    
    gulp.task('default', ['styles', 'jshint', 'watch']);
    

    watch()

    watch方法用于指定需要监视的文件。一旦这些文件发生变动,就运行指定任务。

    gulp.task('watch', function () {
        gulp.watch('templates/*.tmpl.html', ['build']);
    });
    

    上面代码指定,一旦templates目录中的模板文件发生变化,就运行build任务。

    watch方法也可以用回调函数,代替指定的任务。

    gulp.watch('templates/*.tmpl.html', function (event) {
        console.log('Event type: ' + event.type);
        console.log('Event path: ' + event.path);
    });
    

    相关文章

      网友评论

          本文标题:webpack & gulp

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