gulp——自动化的流程构建工具

2017-05-21  本文已影响111人  顽皮的雪狐七七

【目录】





gulp的功能

其他常用的构建工具:

grunt / webpack

gulp相较于grunt来说是轻量级的,webpack会有模块化的处理

常用的5个API

gulp的下载和安装

1、先将node安装好(gulp 是基于node,再通过 node 安装 gulp)

//window+R运行 --> cmd --> node -v --> 如果安装了node会有版本号出现

//使用淘宝镜像(国外翻墙访问仓库地址)

npm config set registry https://registry.npm.taobao.org --global

npm config set desturl https://npm.taobao.org/dist --global

也可以下载一个 cnpm 使用,和npm的功能是一样的

$ cnpm install[name]
//直接去淘宝镜像里面拿东西

[课外扩展]

node.js

​ 是一个javascript的运行时的运行环境,通过node可以执行js代码,就和在浏览器中能够执行js代码一样。浏览器也是一个 javascript的运行时的运行环境

npm (node package manager) node的包管理工具

​在安装了node之后,会自动给安装一个npm,我们可以通过npm来下载或更新各种项目中要使用的包文件,具体使用如下:

​找到当前文件夹(- 进去的时候是默认在C:Users/name --> cd d 进入到文件夹中

​ - 在当前文件夹中shift + 右键 --> 命令框)

1 先使用npm进行初始化
  npm init
  
2 写一个名称,一路回车到 is this ok?(yes)

3 初始化好以后,在目录中会创建一个package.json 的文件

4 在通过命名来下载文件
  npm install jquery(默认下载最新版本的jquery)
  npm install bootstrap
  npm install jquery@3.2.1(下载指定版本的jquery)
  npm install bootstrap--save (项目在上线和运行的时候都要使用的,再进行下载的时候也会进行版本的替换)
  

​ 'npm install bootstrap--save' (项目在上线和运行的时候都要使用的依赖文件)这时会在json文件中新加一个配置属性

dependencies.png

2、使用npm进行初始化 npm init

3、安装Glup命令行

4、就可以在本地使用gulp了

[注意:]

gulp的基本使用

使用gulp构建任务的步骤

1、在项目的根目录中手动创建一个gulpfile.js的文件

2、在gulpfile.js中开始写任务

3、任务写好了以后,通过命令: gulp 任务名称 来执行相关的任务

gulp初体验

在gulpfile.js中

   //将gulp 这个模块引入到当前js文件中
   //接下来写代码的时候,需要用到gulp这个模块
   //require node 里面加载模块的方式
var gulp = require('gulp');

//写gulp任务
//task 方法,用于创建一个任务
//第一个参数表示:当前任务的名称
//第二个参数表示:执行当前任务要执行的代码
gulp.task('js',function(){
    //js这个任务执行的时候,这里面的代码就会被执行
    console.log('js 任务执行了')
})

然后去当前文件夹中的cmd中执行

gulpjs.png

gulp自身方法——文件拷贝任务

原理图

pipe.png
//写gulp任务
//将gulp 这个模块引入到当前js文件中
var gulp = require('gulp');
//task 方法,用于创建一个任务
//第一个参数表示:当前任务的名称
//第二个参数表示:执行当前任务要执行的代码
gulp.task('js',function(){
    //js这个任务执行的时候,这里面的代码就会被执行
    //src方法用于找到一个文件
    //第一个参数表示:要查找的文件路径
    gulp
        .src('./test/index.js')
        //pipe()管道开始流动
        //dest方法用于指定一个输出目录
        //拿到src中的文件,顺着管道把这个文件放到dist目录中来,如果目录不存在,会自动创建目录,然后将文件拷贝到当前目录中
        //相当于完成了文件拷贝
        .pipe( gulp.dest('./dist'))
})

//在cmd中执行的时候,会创建一个dist文件夹,会把test文件夹中的index.js文件拷贝到dist文件夹中。

插件完成的任务——强大

以下插件都使用:npm install --save-dev gulp-[名称] 安装

网络不好的情况下最好是一个一个安装

gulp-uglify:压缩和混淆js代码

//压缩js
//1、需要单独安装gulp-uglify 插件,用于压缩js
// npm install --save-dev gulp-uglify
//2、将压缩插件模块 引入到当前插件中
// var uglify = require('gulp-uglify')
var gulp = require('gulp');
//引入压缩js的插件模块
var uglify = require('gulp-uglify')
//创建任务
gulp.task('js',function(){
    gulp
        //拿到文件
        .src('./test/index.js')
        //压缩
        .pipe(uglify())
        //将压缩以后的js文件输出到指定文件夹
        .pipe(gulp.dest('./dist'))
});


//在cmd中运行   gulp js
//会在./dist中生成一个压缩的js文件

gulp-less:将less转化为css

gulp-cssnano:压缩css代码

原理图

pipeless.png
//less转css,压缩css
//1、需要单独安装gulp-less/gulp-cssnano 插件
// npm install --save-dev gulp-less
// npm install --save-dev gulp-cssnano
var gulp = require('gulp');
// 引入转化css模块
var less = require('gulp-less')
// 引入压缩css模块
var sccnano = require('gulp-cssnano')
gulp.task('less',function(){
    gulp.src('./test/index.less')
    //转化成css
        .pipe(less())
    //对css文件进行压缩
        .pipe(cssnano())
    //将压缩以后的js文件输出到指定文件夹
        .pipe(gulp.dest('./dist/'))
});

//在cmd中运行   gulp less
//会在./dist 中创建一个压缩过的css文件

gulp-htmlmin:压缩html代码

//压缩html
//1、需要单独安装gulp-htmlmin 插件
// npm install --save-dev gulp-htmlmin
var gulp = require('gulp');
//引入模块
var htmlmin = require('gulp-htmlmin')
//创建任务
gulp.task('html',function(){
    gulp
        .src('./test/index.html')
          //对html文件进行压缩
        .pipe(htmlmin({
          //压缩空白部分
            collapseWhitespace:true,
          //压缩页面中通过style设置的css
            minifyCSS:true,
          //压缩页面中通过script设置的js
            minifyJS:true
        }))
       //将压缩以后的js文件输出到指定文件夹
        .pipe(gulp.dest('./dist'));
});

//在cmd中运行   gulp html
//会在 ./dist 中创建一个没有压缩过的html文件

gulp-concat:合并js/css文件

//js文件的合并
//1、需要单独安装gulp-concat 插件
// npm install --save-dev gulp-concat
var gulp = require('gulp');
//引入模块
var concat = require('gulp-concat');
//创建任务
gulp.task('abc',function(){
    gulp
    //src中可以传数组元素
        .src(['test/index.js','test/test.js'])
    //合并文件,参数是合成之后的文件名
        .pipe(concat('c.js'))
    //对合成之后的文件进行压缩
        .pipe(uglify())
    //将压缩以后的js文件输出到指定文件夹
        .pipe(gulp.dest('dist'));
})

//在cmd中运行   gulp abc
//会在 ./dist 中创建一个名为c的压缩过的js文件
//js文件中,前面是index中的js,后面是test中的js

browser-sync:同步刷新浏览器

修改的内容可以再浏览器中同步,可以多个浏览器同步,刷新的不是整个页面,是内容动态刷新(最能说明这个的例子是使用display)

如果默认display:none,点击按钮之后display:block,如果是刷新页面的话,就会改变之后盒子隐藏,但是实际情况盒子并没有隐藏,说明不是刷新整个页面。

//前面的所有任务最后都要加这个
//当文件发生变化以后让浏览器自动刷新
    .pipe(browserSync.reload({stream:true}));


//浏览器同步  browser-sync
var browserSync = require('browser-sync').create()

// 配置静态服务器
gulp.task('bs',function(){
    //初始化
    browserSync.init({
        server:{
            //指定根目录,将来根目录中的内容发生变化以后我们会执行当前任务
            baseDir:'./test'
        }
    })
})

//此时在cmd命令中执行  gulp bs ,会自动打开浏览器
//但是修改文件的时候并没有自动刷新

bs.png watch.png

参考文章

©copyright burning.

上一篇下一篇

猜你喜欢

热点阅读