关于前端自动化工具GULP

Gulp的准备工作

1、准备工作

2、Gulp基础

3、Gulp插件

安装gulp

在node.js环境下输入指令

npm install gulp –g全局安装

npm install gulp –save-dev安装依赖

初始化工程

1、新建文件夹

mkdir文件夹名称

2 、cd命令进入文件夹下

3、创建package.json文件(手动创建或者命令行创建,npminit输入相关信息)

4、然后发现没有gulp这个时候就需要输入

     npm install gulp –save-dev然后出现一个node_modules/文件夹

(2)有配置文件的话直接输入npm install就可以了

创建任务

   在根目录下创建一个gulpfile.js的文件

   在文件中写入以下内容

       vargulp = require(‘gulp’);

        gulp.task('hello',function(){ //第一个参数是任务名称,第二个参数是任务功能

        console.log('hello world!'); })

写完之后呢

       在命令行中输入gulp hello命令执行输出hello world!

       其他命令我们会在后面介绍 这里呢我们先介绍一个默认的任务

        gulp.task('default',function(){})他也有回调函数,但是呢,但是回调函数,我们可以通过数组来定义

         gulp.task('default',['hello',....]);数组里放入我们定义的字符串然后命令行中输入gulp就可以执行了

Gulp基础

gulp.src()方法可以帮助我们找出将要处理的文件,然后pipe()去处理这些找到的文件。pipe()可以理解为管道,每个管道就可以指定它的功能,最后我们再使用gulp.dest()方法把处理好的文件放到指定的地方。

使用gulp来实现文件的copy

  首先在我们工程目录下新建一个测试使用的index.html,然后写入相应的内容

       在我们个gulpfile.js文件中输入以下内容

              vargulp =require('gulp');

                gulp.task('copy-index',function(){

                      //gulp.src()找到我们的index.html然后使用.pipe()通道

                     //gulp.dest()发布拷贝

                     returngulp.src('index.html').pipe(gulp.dest('dist'));

                });

  在我们的命令行中执行

   gulp copy-index命令然后去dist目录下验证

拷贝图片文件从某一个工程下面拷贝图片

首先在本工程下放入一个图片目录文件

然后在gulpfile.js文件中写入

var gulp = require('gulp');

gulp.task('images',function(){

return gulp.src('images/*.jpg').pipe(gulp.dest('dist/images'))

});

命令行中执行gulp images

然后去dist文件夹下去验证

下面再讲一下如何拷贝images下面文件夹以及文件夹下文件

加入我们想要同时拷贝jpg,png文件

gulp.task('images',function(){

    returngulp.src('images/*.{jpg,png}').pipe(gulp.dest('dist/images'))

})

里面不要加空格

如何拷贝文件夹呢

gulp.task('images',function(){

    returngulp.src('images/**').pipe(gulp.dest('dist/images'))

})

/*代表拷贝文件夹以及文件夹下文件

当前文件夹下所有文件以及子文件下所有文件(全拷贝)

两个文件夹同时拷贝到某一个文件夹下

gulp.task('data',function(){

      returngulp.src(['xml/*.xml','json/*.json']).pipe(gulp.dest('dist/data'));

})

排除文件拷贝

gulp.task('data',function(){

       returngulp.src([‘xml/*.xml’,‘json/*.json’,'!json/b.json']).pipe(gulp.dest('dist/data'));

})

!json/b.json排除某个文件

多个任务执行将上述几个一起执行

gulp.task('build',['copy-index','images','data'],function(){

     console.log('编译成功');

})

 命令行gulp build查看效果

 侦测文件变化

 gulp.task('watch',function(){

          gulp.watch('index.html',['copy-index']);gulp.watch('images/**/*.{jpg,png}',['images']);gulp.watch(['xml/*.xml','json/*.json','!json/secret.json'],     ['data']);

})

回到命令行执行gulp watch

结束ctrl +C

回到文件里面改变文件看下效果

Gulp插件

访问网站http://gulpjs.com/plugins

gulp sass

gulp编译sass

 命令行安装依赖

   npm install gulp-sass --save-dev

   创建sass文件,写入内容

   在gulpfile.js文件中写入

    var sass = require('gulp-sass');

         gulp.task('sass',function(){

             returngulp.src('stylesheet/**/*.scss')

              .pipe(sass())

           .pipe(gulp.dest('dist/css'))

  })

gulp-connect插件搭建本地服务

命令行安装npm install

  gulp-connect --save-dev

   在gulpfile.js文件中写入

  var connect= require('gulp-connect');

          gulp.task('sever',function(){

            connect.server({root:’dist’});

  })

启动服务:命令行执行gulp sever

修改文件后页面自动刷新

gulp.task('sever',function(){

//connect.server();

//sever()方法介绍

//配置文档根目录

connect.server({

root:'dist',

livereload:true

});

})

然后在我们copy任务中添加

gulp.task('copy',function(){

returngulp.src('index.html').pipe(gulp.dest('')) .pipe(connect.reload());

})

然后在watch中添加

gulp.task('watch',function(){

gulp.watch('index.html',['copy-index']);

})

然后创建一个

gulp.task('default',['sever','watch']);

最后执行gulp default命令

合并文件插件gulp-concat

命令行安装npm install

gulp-concat --save-dev

在gulpfile.js中

var concat = require('gulp-concat');

gulp.task('scripts',function(){

returngulp.src(['javascripts/avalon.js','javascripts/index.js'])

.pipe(concat('vendor.js'))

.pipe(gulp.dest('dist/js'));

})

将合并js文件进行压缩gulp-uglify

命令行安装npm install

gulp-uglify --save-dev

在gulpfile.js中

      var uglify = require('gulp-uglify');

      gulp.task('scripts',function(){

              return  gulp.src(['javascripts/avalon.js','javascripts/index.js'])

                     .pipe(concat('vendor.js'))

                     .pipe(uglify())

                     .pipe(gulp.dest('dist/js'));

          })

为了保留前后压缩两个文件

怎么做呢

安装gulp-rename插件

命令行安装npm install

gulp-rename --save-dev

var rename = require('gulp-rename');

gulp.task('scripts',function(){

return

gulp.src(['javascripts/avalon.js','javascripts/index.js'])

.pipe(concat('vendor.js'))

.pipe(gulp.dest('dist/js'))

.pipe(uglify())

.pipe(rename('vendor.min.js'))

.pipe(gulp.dest('dist/js'));

})

命令行执行gulp scripts验证是否生成两个文件

如何压缩css

命令行安装npm install

gulp-minify-css --save-dev

var minifyCss = require('gulp-minify-css');

gulp.task(‘sass',function(){

return gulp.src('stylesheet/**/*.sass')

.pipe(sass())

.pipe(minifyCss())

.pipe(gulp.dest('dist/css'));

})

还可以对图片进行压缩

安装插件npm install gulp-imagemin

--save-dev

var imagemin = require('gulp-imagemin');

gulp.task('images',function(){

returngulp.src('images/**/*')

.pipe(imagemin())

.pipe(gulp.dest('dist/images'))

})

执行命令gulp images

你可能感兴趣的:(关于前端自动化工具GULP)