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

相关文章

基于Python构建一个高效词汇表

《基于Python构建一个高效词汇表》在自然语言处理(NLP)领域,构建高效的词汇表是文本预处理的关键步骤,本文将解析一个使用Python实现的n-gram词频统计工具,感兴趣的可以了解下... 目录一、项目背景与目标1.1 技术需求1.2 核心技术栈二、核心代码解析2.1 数据处理函数2.2 数据处理流程

Python FastMCP构建MCP服务端与客户端的详细步骤

《PythonFastMCP构建MCP服务端与客户端的详细步骤》MCP(Multi-ClientProtocol)是一种用于构建可扩展服务的通信协议框架,本文将使用FastMCP搭建一个支持St... 目录简介环境准备服务端实现(server.py)客户端实现(client.py)运行效果扩展方向常见问题结

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

Python使用python-docx实现自动化处理Word文档

《Python使用python-docx实现自动化处理Word文档》这篇文章主要为大家展示了Python如何通过代码实现段落样式复制,HTML表格转Word表格以及动态生成可定制化模板的功能,感兴趣的... 目录一、引言二、核心功能模块解析1. 段落样式与图片复制2. html表格转Word表格3. 模板生

一文教你Java如何快速构建项目骨架

《一文教你Java如何快速构建项目骨架》在Java项目开发过程中,构建项目骨架是一项繁琐但又基础重要的工作,Java领域有许多代码生成工具可以帮助我们快速完成这一任务,下面就跟随小编一起来了解下... 目录一、代码生成工具概述常用 Java 代码生成工具简介代码生成工具的优势二、使用 MyBATis Gen

Python使用Reflex构建现代Web应用的完全指南

《Python使用Reflex构建现代Web应用的完全指南》这篇文章为大家深入介绍了Reflex框架的设计理念,技术特性,项目结构,核心API,实际开发流程以及与其他框架的对比和部署建议,感兴趣的小伙... 目录什么是 ReFlex?为什么选择 Reflex?安装与环境配置构建你的第一个应用核心概念解析组件