gulp核心知识点目录

gulp

文章目录

  • gulp
          • gulp 就是一种可以自动化完成我们开发过程中大量的重复工作
  • gulp是一个前端自动化构建工具。
  • 创建一个简单的应用
  • gulp的安装
  • 常用的gulp插件
          • 扩展的插件
          • 下载插件
          • 配置插件
  • 方法使用
          • - //注册任务
          • - //读文件
          • - //输出文件
          • - //监听文件变更
          • - //设置执行任务顺序(串行)
          • - //注册多个任务
  • 查找规则 说明
  • 应用gulpfile.js
        • 编译scss 与sass
        • 编译less
          • 自动添加前缀
          • 合并文件
          • 压缩css
        • 压缩html
          • 压缩图片
        • 压缩js
        • 编译es6
          • md5 添加前缀
          • 代理

  • 不再是简单的使用HTML + CSS + JavaScript 这些技术去构建网页应用。
  • 我们要提高效率,就必须减少重复的工作。
  • 使用less之类预处理的css
  • 提供开发阶段更加便利,更加快捷
gulp 就是一种可以自动化完成我们开发过程中大量的重复工作
  • 预处理语言的编译
  • js css html 压缩混淆
  • 图片体积优化

gulp是一个前端自动化构建工具。

  • gulp类似的工具:grunt 、webpack
  • gulp是基于node体系的。
  • gulp优点:
    • 易于使用
    • 构建快速
    • 插件高质
    • 易于学习

创建一个简单的应用

  • gulpfile.js —gulp配置文件

gulp的安装

  • 安装nodejs,查看版本:node -v
  • 全局安装gulp
  • cnpm install gulp -g
  • 局部安装gulp
  • cnpm install gulp --save-dev (开发依赖包)

常用的gulp插件

插件名 功能
gulp-sass 编译scss
gulp-less 编译less
gulp-autoprefixer 自动添加前缀
gulp-concat 合并文件
gulp-clean-css 压缩css
gulp-webserver 起服务
gulp-htmlmin 压缩html
gulp-imagemin 压缩图片
gulp-uglify 压缩js 不支持ES6
gulp-babel ES6—>ES5
gulp-rev 生成文件后缀
gulp-rev-collector 替换文件路径
gulp-rename 文件重命名
gulp-babel 编译JS(ES6—>ES5)
  • 注:使用 babel(安装成7.0的版本) 需要babel-core和babel-preset-es2015

  • cnpm install gulp-babel@7 babel-core babel-preset-env/es2015 -g

扩展的插件
  • https://www.npmjs.com/
下载插件
  • $ cnpm install gulp-concat gulp-uglify gulp-rename --save-dev (多个插件同时下载)
  • $ cnpm install gulp-less gulp-clean-css --save-dev
配置插件
  • //gulpfile.js
  • var concat = require(‘gulp-concat’);
  • var uglify = require(‘gulp-uglify’);
  • var rename = require(‘gulp-rename’);
  • var less = require(‘gulp-less’);
  • var sass = require(‘gulp-sass’);
  • var cleanCss = require(‘gulp-clean-css’);

方法使用

- //注册任务
  • gulp.task(‘任务名’,function(){
  • //逻辑具体任务
    
  • })
- //读文件
  • gulp.src(“目标文件路径”)
- //输出文件
  • gulp.dest(“输出的文件路径”)
  • //可以理解为管道,将操作加入到执行队列。
  • gulp.pipe()
- //监听文件变更
  • gulp.task(‘任务名’, function () {
  • gulp.watch('监听文件目录', gulp.series('任务名', '任务名'...));
    
  • })
- //设置执行任务顺序(串行)
  • gulp.series(“任务名”,“任务名”…)
  • //设置执行任务顺序(并行)
  • gulp.parallel(“任务名”,“任务名”…)
- //注册多个任务
  • gulp.task(‘default’, gulp.series(“任务名”…));

查找规则 说明

查找规则 说明
* 查找所有的
** 匹配的0个或多个文件夹
{,} 匹配多个文件,或多个属性

应用gulpfile.js

  • gulpfile.js
  • //引入模块
  • var gulp = require(‘gulp’);
  • //注册转换less的任务
  • gulp.task(‘less’,function(){
  • return gulp.src('src/less/*.less')
    
  • .pipe(less()) //使用less对象进行编译
    
  • .pipe(gulp.dest('src/css'))编译的的结果保存到目录
    
  • })
  • //注册转换sass的任务
  • gulp.task(‘sass’,function(){
  • return gulp.src("src/scss/*.scss")
    
  • .pipe(sass()) //进行编译
    
  • //自动处理浏览器前缀 
    
  • .pipe(autoprefixer({
    
  •     browsers: ['last 2 versions', 'Android >= 4.0'], //浏览器版本
    
  •     cascade: true, //是否美化属性值 默认:true 
    
  •     remove:true //是否去掉不必要的前缀 默认:true 
    
  • }))
    
  • .pipe(gulp.dest('dist/'))
    
  • })
  • //注册合并压缩js的任务
  • gulp.task(‘js’,function(){
  • return gulp.src("src/js/**/*.js") //找到目标原文件,将数据读取到gulp的内存中
    
  • .pipe(concat('build.js'))//合并临时文件
    
  • .pipe(gulp.dest('dist/js/'))//输出文件到本地路径
    
  • .pipe(uglify())//压缩文件
    
  • .pipe(rename('build.min.js'))//重命名第一种情况
    
  • .pipe(rename({suffix:'.min'})) //重命名第二种情况;suffix:后缀名
    
  • .pipe(gulp.dest("dist/js/"))
    
  • })
  • /*
    • 编译js文件,合并js,并且压缩
    • es6 - es5
    • 需要gulp-babel和babel-core和babel-preset-es2015
    • $ cnpm install gulp-babel@7 babel-core babel-preset-es2015 -g
  • */
  • gulp.task(‘js’,function(){
  • return gulp.src('./src/js/style/*.js')
    
  • .pipe(babel({
    
  •     presets:'es2015'
    
  • }))  //编译es6 -es5
    
  • .pipe(concat("all.js")) //合并
    
  • .pipe(uglify()) //压缩
    
  • .pipe(gulp.dest('./src/js/'))
    
  • })
  • //注册压缩html的任务
  • gulp.task(‘htmlMin’, () => {
  • //removeComments: true,//清除HTML注释
    
  • //collapseWhitespace: true,//压缩HTML
    
  • return gulp.src('index.html')
    
  •   .pipe(htmlmin({collapseWhitespace: true,removeComments: true,}))
    
  •   .pipe(gulp.dest('dist/'));
    
  • });
  • //开启服务
  • gulp.task(‘server’,function(){
  • return gulp.src('src')
    
  • .pipe(webserver({
    
  •     port:9090, //端口号
    
  •     open:true, //自动打开浏览器
    
  •     livereload:true, //自动打开刷新
    
  •     proxies:[  //代理
    
  •         { source:'/api/find',target:'http://localhost:3000/api/find'}
    
  •     ]   
    
  • }))
    
  • })
  • //开发坏境(串联)
  • gulp.task(‘dev’,gulp.series(‘任务名’,‘任务名’))
  • //线上环境(并联)
  • gulp.task(‘build’,gulp.parallel(‘任务名’,‘任务名’))
  • 执行 --> gulp 任务名
  • 一些参数
  • last 2 versions: 主流浏览器的最新两个版本
  • last 1 Chrome versions: 谷歌浏览器的最新版本
  • last 2 Explorer versions: IE的最新两个版本
  • last 3 Safari versions: 苹果浏览器最新三个版本
  • Firefox >= 20: 火狐浏览器的版本大于或等于20
  • iOS 7: IOS7版本
  • Firefox ESR: 最新ESR版本的火狐
  • 5%: 全球统计有超过5%的使用率
  • 在 package 文件中scripts字段添加dev 和 build 两个命令
  • {
  • “scripts”: {
  • "dev": "gulp dev",// npm run dev 开发
    
  • "build": "gulp build" // npm run build 
    
  • },
  • “devDependencies”: {
  • "gulp-sass": "^4.0.2",
    
  • "gulp-webserver": "^0.9.1"
    
  • }
  • }

编译scss 与sass

 "gulp-sass": "^3.1.0"
var gScss = require('gulp-sass');
gulp.task('scss1', function() {
    return gulp.src('./origin/*.scss') //指定scss文件 
        .pipe(gScss())//调用引入的文件 它抛出的是一个函数执行就行
        .pipe(gulp.dest('./detection'));
});

编译less

 "gulp-less": "^3.4.0"
var gLess = require('gulp-less');
gulp.task('less', function() {
    return gulp.src('./origin/*.less')
        .pipe(gLess())
        .pipe(gulp.dest('./detection/'));
});
自动添加前缀
gulp-autoprefixer
var autoprefixer = require("autoprefixer");
gulp.task('autopre', function() {
    return gulp.src("src/css/*.css")
        .pipe(autoprefixer({
            browsers: ['last 2 versions'] //离你最近的两个浏览器版本
        )) 
        .pipe(gulp.dest("dist")); //生成新文件
})
合并文件
gulp-concat
var concats = require('gulp-concat');
gulp.task('concat', function() {
    return gulp.src('./detection/*.css') //需要合并的文件
        .pipe(concats('all.css')) //合并后的文件名
        .pipe(gulp.dest('./dest/')); //合并后存贮的位置
});
压缩css
 "gulp-clean-css"
var miniCss = require('gulp-clean-css');
gulp.task('minicss', function() {
    return gulp.src('./detection/style.css')
        .pipe(miniCss())
        .pipe(gulp.dest('./zlib/'));
});

gulp-webserver
gulp.src("./目录")

port :配置端口号
open: 自动打开浏览器(true)
livereload: 自动刷新(true)
host: 配置IP(localhost是默认值)
fallback: 指定默认打开的文件(index.html默认)
middleware:function(req,res,next){ //拦截前端请求
    next表示执行下一个,移交控制权
}

压缩html

"gulp-htmlmin": "^4.0.0"
var miniHtml = require('gulp-htmlmin');
gulp.task('miniH', function() {
    return gulp.src('./detection/index.html')
        .pipe(miniHtml({
            collapseWhitespace: true, //压缩HTML
          
        }))
        .pipe(gulp.dest('./zlib/'))
});

miniHtml参数

{
    removeComments: true,//清除HTML注释
    collapseWhitespace: true,//压缩HTML
    collapseBooleanAttributes: true,//省略布尔属性的值  ==> 
    removeEmptyAttributes: true,//删除所有空格作属性值  ==> 
    removeScriptTypeAttributes: true,//删除
                    
                    

你可能感兴趣的:(gulp,打包压缩)