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

相关文章

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor

如何使用Ansible实现CI/CD流水线的自动化

如何使用Ansible实现CI/CD流水线的自动化 持续集成(CI)和持续交付(CD)是现代软件开发过程中的核心实践,它们帮助团队更快地交付高质量的软件。Ansible,作为一个强大的自动化工具,可以在CI/CD流水线中发挥关键作用。本文将详细介绍如何使用Ansible实现CI/CD流水线的自动化,包括设计流水线的结构、配置管理、自动化测试、部署、以及集成Ansible与CI/CD工具(如Jen

利用命令模式构建高效的手游后端架构

在现代手游开发中,后端架构的设计对于支持高并发、快速迭代和复杂游戏逻辑至关重要。命令模式作为一种行为设计模式,可以有效地解耦请求的发起者与接收者,提升系统的可维护性和扩展性。本文将深入探讨如何利用命令模式构建一个强大且灵活的手游后端架构。 1. 命令模式的概念与优势 命令模式通过将请求封装为对象,使得请求的发起者和接收者之间的耦合度降低。这种模式的主要优势包括: 解耦请求发起者与处理者

Jenkins构建Maven聚合工程,指定构建子模块

一、设置单独编译构建子模块 配置: 1、Root POM指向父pom.xml 2、Goals and options指定构建模块的参数: mvn -pl project1/project1-son -am clean package 单独构建project1-son项目以及它所依赖的其它项目。 说明: mvn clean package -pl 父级模块名/子模块名 -am参数

JAVA用最简单的方法来构建一个高可用的服务端,提升系统可用性

一、什么是提升系统的高可用性 JAVA服务端,顾名思义就是23体验网为用户提供服务的。停工时间,就是不能向用户提供服务的时间。高可用,就是系统具有高度可用性,尽量减少停工时间。如何用最简单的方法来搭建一个高效率可用的服务端JAVA呢? 停工的原因一般有: 服务器故障。例如服务器宕机,服务器网络出现问题,机房或者机架出现问题等;访问量急剧上升,导致服务器压力过大导致访问量急剧上升的原因;时间和

利用Django框架快速构建Web应用:从零到上线

随着互联网的发展,Web应用的需求日益增长,而Django作为一个高级的Python Web框架,以其强大的功能和灵活的架构,成为了众多开发者的选择。本文将指导你如何从零开始使用Django框架构建一个简单的Web应用,并将其部署到线上,让世界看到你的作品。 Django简介 Django是由Adrian Holovaty和Simon Willison于2005年开发的一个开源框架,旨在简