Gulp 自动化构建

2024-06-10 09:08
文章标签 构建 自动化 gulp

本文主要是介绍Gulp 自动化构建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Gulp 自动化构建

use-gulp

官网

gulp 可以做什么?

  1. 编译 sass
  2. 合并优化压缩 css
  3. 校验压缩 js
  4. 优化图片
  5. 添加文件指纹(md5)
  6. 组件化头部底部(include html)
  7. 实时自动刷新…

    gulp是前端开发过程中对代码进行自动化构建的利器。它不仅能对资源进行优化,而且在开发过程中能够通过配置自动完成很多重复的任务,让我们可以专注于代码,提高工作效率。

    通过各种插件, 配置任务task , 完成需要

安装

  1. 全局安装

    npm install gulp -g

  2. 局部安装

    npm i -D gulp

gulp的插件

这里列举比较常用的插件:

  • gulp-less // less文件编译成css
  • gulp-clean-css // 压缩css文件
  • gulp-csso // 压缩优化css
  • gulp-babel /// 将ES6代码编译成ES5。
  • gulp-uglify // 压缩js文件
  • gulp-imagemin // 压缩图片
  • gulp-html-minify // 压缩HTML
  • gulp-htmlmin // 压缩html
  • gulp-filter // 在虚拟文件流中过滤文件
  • gulp-concat // 合并文件
  • gulp-rename // 重命名文件
  • gulp-clean // 清理文件 可以用 del 替代
  • gulp-notify // 当发生异常时提示错误
  • gulp-plumber // 当发生异常时提示错误

比较特殊的
- gulp-load-plugins

var $ = require('gulp-load-plugins')(); $ 是一个对象,加载了依赖里的插件 通过$.xxx使用插件
  • gulp-livereload // 网页自动刷新
  • gulp-webserver // 本地服务器

参考网站
https://blog.csdn.net/qq_27626333/article/details/78006271

gulp插件网站
https://gulpjs.com/plugins/

gulp api

gulp.src( )

一般直接写文件路径, 通过 * 通配符来通配全部文件

gulp.dest(path[, options])

输出到文件夹 , 文件夹不存在将会自动创建

gulp.task(name[, deps], fn)

核心 , 配置一个任务 执行一连续的操作

name
任务的名字,如果你需要在命令行中运行你的某些任务,那么,请不要在名字中使用空格。

deps
类型: Array
一个包含任务列表的数组,这些任务会在你当前任务运行之前完成。

fn
该函数定义任务所要执行的一些操作。通常来说,它会是这种形式:gulp.src().pipe(someplugin())。

gulp.watch( )

gulp.watch(glob [, opts], tasks) 或 gulp.watch(glob [, opts, cb]

监视文件,并且可以在文件发生改动时候做一些事情。它总会返回一个 EventEmitter 来发射(emit) change 事件。

var watcher = gulp.watch('js/**/*.js', ['uglify','reload']);
watcher.on('change', function(event) {console.log('File ' + event.path + ' was ' + event.type + ', running tasks...');
});// 其他写法gulp.watch('js/**/*.js', function(event) {console.log('File ' + event.path + ' was ' + event.type + ', running tasks...');
});

配置任务

这里以使用gulp-less文件编译less文件做例子

在项目根路径下 创建gulpfile.js 文件


var gulp = require('gulp')// less文件编译成css
var less = require('gulp-less') gulp.task('lessTask', function() {// 链式编程 以流的形式传递数据gulp.src('src/less/*.less') // 找到文件.pipe(rename({ suffix: '.min' })) // 重命名.pipe(less()) // 将less文件编译成css.pipe(gulp.dest('dist/css')) // 输出 将会在dist/css下生成index.css
});gulp.task('default',[ 'htmlminTask']); // 默认任务 , gulp 默认执行

可以通过 gulp lessTask 执行任务

如果在添加到默认任务中, 直接gulp执行

异步或同步执行

在task中 是否使用return来决定是异步还是同步

const gulp = require('gulp');
// 没有使用return
gulp.task('js',function () {gulp.src('src/js/*.js')...
})gulp.task('css',function () {gulp.src('src/js/*.js')...
})gulp.task('html',function () {gulp.src('src/js/*.js')...
})gulp.task('default', ['js', 'css', 'html']); 

执行结果

执行结果

上一个任务完成 才执行 下一个

然后加上return

const gulp = require('gulp');// 使用return
gulp.task('js', function () {return gulp.src('src/js/*.js')
})
gulp.task('css', function () {return gulp.src('src/js/*.js')
})
gulp.task('html', function () {return gulp.src('src/js/*.js')
})gulp.task('default', ['js', 'css', 'html']);

执行结果

执行结果

结果显然是异步的

不想全部同步 , 但是个别任务是要同步顺序执行 怎么办?

// less文件转化为css文件
gulp.task('less', function () {return gulp.src('src/less/*.less').pipe($.less()).pipe(gulp.dest('src/css/'))
});// 添加前置任务 这样less任务执行完 才会执行css任务
// 执行css任务 都是自动先执行完less任务
gulp.task('css', ['less'], function () {return gulp.src('src/css/*.css')// .pipe($.concat('build.css')) // 合并成一个文件.pipe($.rename({suffix: ".min"})).pipe($.cleanCss()).pipe(gulp.dest('dist/css/'))
});

gulp 自动刷新

一个自动化构建工具
怎么可以少了 watch 和自动刷新

自动刷新的插件是 gulp-livereload 本地服务器可以用 gulp-webserver 或者 gulp-connect 都可以

这里就演示用gulp-webserver和gulp-conncet

const gulp = require('gulp');
const $ = require('gulp-load-plugins')();
// 使用 open 自动打开一个网址
const open = require('open');
gulp.task('css', function()){return gulp.src('src/css/*.css').pipe(gulp.dest('dist/css/')).pipe($.livereload()).pipe($.connect.reload())
}
gulp.task('server', ['default'], function () {$.connect.server({root: 'dist/',livereload: true,port: 8080});open('http://localhost:8080');gulp.watch('src/css/*.css', ['css']);
});

输入 gulp server 启动一下即可

这里就不演示了

这篇关于Gulp 自动化构建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1047742

相关文章

Rust中的Drop特性之解读自动化资源清理的魔法

《Rust中的Drop特性之解读自动化资源清理的魔法》Rust通过Drop特性实现了自动清理机制,确保资源在对象超出作用域时自动释放,避免了手动管理资源时可能出现的内存泄漏或双重释放问题,智能指针如B... 目录自动清理机制:Rust 的析构函数提前释放资源:std::mem::drop android的妙

Python自动化Office文档处理全攻略

《Python自动化Office文档处理全攻略》在日常办公中,处理Word、Excel和PDF等Office文档是再常见不过的任务,手动操作这些文档不仅耗时耗力,还容易出错,幸运的是,Python提供... 目录一、自动化处理Word文档1. 安装python-docx库2. 读取Word文档内容3. 修改

Python自动化办公之合并多个Excel

《Python自动化办公之合并多个Excel》在日常的办公自动化工作中,尤其是处理大量数据时,合并多个Excel表格是一个常见且繁琐的任务,下面小编就来为大家介绍一下如何使用Python轻松实现合... 目录为什么选择 python 自动化目标使用 Python 合并多个 Excel 文件安装所需库示例代码

10个Python自动化办公的脚本分享

《10个Python自动化办公的脚本分享》在日常办公中,我们常常会被繁琐、重复的任务占据大量时间,本文为大家分享了10个实用的Python自动化办公案例及源码,希望对大家有所帮助... 目录1. 批量处理 Excel 文件2. 自动发送邮件3. 批量重命名文件4. 数据清洗5. 生成 PPT6. 自动化测试

10个Python Excel自动化脚本分享

《10个PythonExcel自动化脚本分享》在数据处理和分析的过程中,Excel文件是我们日常工作中常见的格式,本文将分享10个实用的Excel自动化脚本,希望可以帮助大家更轻松地掌握这些技能... 目录1. Excel单元格批量填充2. 设置行高与列宽3. 根据条件删除行4. 创建新的Excel工作表5

nginx-rtmp-module构建流媒体直播服务器实战指南

《nginx-rtmp-module构建流媒体直播服务器实战指南》本文主要介绍了nginx-rtmp-module构建流媒体直播服务器实战指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. RTMP协议介绍与应用RTMP协议的原理RTMP协议的应用RTMP与现代流媒体技术的关系2

MySQL分表自动化创建的实现方案

《MySQL分表自动化创建的实现方案》在数据库应用场景中,随着数据量的不断增长,单表存储数据可能会面临性能瓶颈,例如查询、插入、更新等操作的效率会逐渐降低,分表是一种有效的优化策略,它将数据分散存储在... 目录一、项目目的二、实现过程(一)mysql 事件调度器结合存储过程方式1. 开启事件调度器2. 创

Python Invoke自动化任务库的使用

《PythonInvoke自动化任务库的使用》Invoke是一个强大的Python库,用于编写自动化脚本,本文就来介绍一下PythonInvoke自动化任务库的使用,具有一定的参考价值,感兴趣的可以... 目录什么是 Invoke?如何安装 Invoke?Invoke 基础1. 运行测试2. 构建文档3.

Windows自动化Python pyautogui RPA操作实现

《Windows自动化PythonpyautoguiRPA操作实现》本文详细介绍了使用Python的pyautogui库进行Windows自动化操作的实现方法,文中通过示例代码介绍的非常详细,对大... 目录依赖包睡眠:鼠标事件:杀死进程:获取所有窗口的名称:显示窗口:根据图片找元素:输入文字:打开应用:依

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链