zoukankan      html  css  js  c++  java
  • 第三方模块Gulp

    Gulp是基于node平台开发的前端构建工具

    将机械化操作编写成任务,想要执行机械化操作时执行一个命令行命令任务就能自动执行了

    用机器代替手工,提高开发效率

    1. Gulp能做什么:

    • 项目上线,HTML、CSS、 JS文件压缩合并
    • 语法转换(es6、less...)
    • 公共文件抽离
    • 修改文件浏览器自动刷新

    2. Gulp使用:
    ① 使用npm install gulp下载gulp文件。 注意:库文件都是本地安装,不需要加-g
    ② 在项目根目录下建立gulpfile.js文件。gulpfile.js文件的名字是gulp要求的,不能随意更改
    ③ 重构项目的文件夹结构src目录放置源代码文件dist目录放置构建后文件
    ④ 在gulpfile.js文件中编写任务
    ⑤ 在命令行工具中执行gulp任务

    3. Gulp中提供的方法:

    • gulp.src():获取任务要处理的文件
    • gulp.dest():输出文件
    • gulp.task():建立gulp任务
    • gulp.watch():监控文件的变化
    const gulp = require('gulp');
    // 使用gulp.task()方法建立任务
    gulp.task('first', () => {
        // 获取要处理的文件
        gulp.src('./src/css/base.css')
        // 将处理后的文件输出到dist目录
              .pipe(gulp.dest('./dist/css'));
    });

    注意:必须要把处理的代码写在.pipe里

    如何执行这个任务呢?如果使用node gulpfile.js则执行的是gulpfile.js整个文件。而我们需要执行的是当前这个文件中的first任务,我们可以使用gulp命令来执行这个文件。

    下载gulp命令行工具:npm install gulp-cli -g注意不是库文件,需要全局安装

    下载完成之后,命令行中多了一个命令:gulp first

    4. Gulp插件:

    gulp属于轻内核的第三方模块,提供的方法非常少,所有的其他功能都是通过插件的方式实现。

    • gulp-htmlmin:htm|文件压缩
    • gulp-csso:压缩css
    • gulp-babel:JavaScript语法转化
    • gulp-less:less语法转化
    • gulp-uglity:压缩混淆JavaScript
    • gulp-file-include:公共文件包含

    在html中先抽离出公共的代码,然后再引入,gulp中使用@@include引入:

    // 引入公共的头部部分
    @@include('./common/header.html');
    • browsersync:浏览器实时同步
    // 引用gulp模块
    const gulp = require('gulp');
    const htmlmin = require('gulp-htmlmin');
    const fileinclude = require('gulp-file-include');
    const less = require('gulp-less');
    const csso = require('gulp-csso');
    const babel = require('gulp-babel');
    const uglify = require('gulp-uglify');
    
    // html任务
    // 1. html文件中代码的压缩操作
    // 2. 抽取html文件中的公共代码
    gulp.task('htmlmin', () => {
        // src目录下的所有html文件
        gulp.src('./src/*.html')
              .pipe(fileinclude())
              // 压缩html文件中的代码, collapseWhitespace为是否压缩空格
              .pipe(htmlmin({ collapseWhitespace:true }))
              .pipe(gulp.dest('dist'));
    
    });
    
    // css任务
    // 1. less语法转换
    // 2. css代码压缩
    gulp.task('cssmin', () => {
        // css目录下的所有less文件以及css文件
        gulp.src(['./src/css/*.less', './src/css/*.css'])
              // 将less语法转换为css语法
              .pipe(less())
              // 将css代码进行压缩
              .pipe(csso())
              // 将处理结果进行输出
              .pipe(gulp.dest('dist/css'));
    });
    
    // js任务
    // 1. es6代码转换
    // 2. 代码压缩
    // 安装babel模块:npm install --save gulp-babel @babel/core @babel/preset-env
    // @babel/core @babel/preset-env是gulp-babel所依赖的模块
    gulp.task('jsmin', () => {
        gulp.src('./src/js/*.js')
              // 将less语法转换为css语法
              .pipe(babel({
                    // 它可以判断当前代码的运行环境,将代码转换为当前运行环境所支持的代码
                    presets: ['@babel/env']
              }))
              .pipe(uglify())
              // 将处理结果进行输出
              .pipe(gulp.dest('dist/js'));
    });
    
    // 复制文件夹
    gulp.task('copy', () => {
        gulp.src('./src/images/*')
              .pipe(gulp.dest('dist/images'));
        gulp.src('./src/lib/*')
              .pipe(gulp.dest('dist/lib'));
    });

    如果想要执行一个命令,其他的所有任务就会自动执行,那就需要进行gulp构建任务:

    // 构建任务
    // 输入命令gulp default,则其他任务也就会自动执行
    gulp.task('default', ['htmlmin', 'cssmin', 'jsmin', 'copy']);
  • 相关阅读:
    vmvare桥接模式下无法连接网络
    netty LEAK: ByteBuf.release() was not called before it's garbage-collected
    FileOutputStream write与原文件md5不一致,文件变大了 或者 SpringMVC的 ResponseEntity 下载的文件与原文件md5值不一样
    小技巧:linux怎么查看连接的创建时间
    org.springframework.dao.QueryTimeoutException: Redis command timed out; nested exception is io.lettuce.core.RedisCommandTimeoutException: Command timed out after 300 millisecond(s)
    fastJson转换json字符串到对象中时类型为list的字段为空
    zookeeper集群搭建Exception when following the leader java.io.EOFException
    用ab测试代理程序
    centos7 配置java程序自启动
    log4j2配置模板
  • 原文地址:https://www.cnblogs.com/zcy9838/p/13090205.html
Copyright © 2011-2022 走看看