gulp自动化构建项目

npm、webpack、gulp多项目自动化构建、部署 多个不同的项目,可能共用一些组件或方法时,不需重新创建多个目录,初始化多个项目,减少重复操作。 文件结构 --build #用于构建的相关文件 |--build.js |--gulpfile.js |--utils.js |--vue-loader.js |--webpack.base.js |--webpack.dev.js |--webpack.prod.js --dist # 各个项目打包后的文件夹 |--project1 --publi 阅读详情

1. 介绍

gulp.js是一个自动化构建工具,开发者可以使用它在项目开发过程中自动执行常见任务。Gulp是基于Node.js构建的,利用 Node.js 流的威力,你可以快速构建项目并减少频繁的 I/O 操作。Gulp.js 源文件和你用来定义任务的 Gulp 文件都是通过 JavaScript源码来实现的。

Gulp侧重于前端开发的整个过程的控制管理(像是流水线),我们可以通过给gulp配置不同的task(通过Gulp中的gulp.task()方法配置,比如启动server、sass/less预编译、文件的合并压缩等等)来让gulp实现不同的功能,从而构建整个前端开发流程。

2.引入

首先gulp是依赖在node环境下的。关于Node的环境安装这里就不在赘述。

2.1 全局安装

全局安装gulp:

npm install -g gulp

2.2 作为项目开发依赖安装

首先初始化package.json

npm init -y

在项目中安装gulp

npm i --save-dev gulp // --save-dev或者—D都表示作为开发依赖进行安装

**注意:**全局安装的gulp只是让您的系统(电脑)增加了一个叫做gulp的命令,这个命令会调用当前目录下的 gulpfile.js 文件,并根据该文件的内容来执行相应的任务,而真正起到提供API功能的却是本地安装的gulp。

3.安装插件

gulp所处理的任务大多都是以插件的形式存在的,所以在使用前,需要先安装我们需要的一些插件到项目中

这里列举一些常用的插件:

  • gulp-rename:重命名文件
  • gulp-concat:合并文件
  • gulp-filter:过滤文件
  • gulp-uglify:压缩Js
  • gulp-csso:压缩优化CSS
  • gulp-html-minify:压缩HTML
  • gulp-imagemin:压缩图片
  • gulp-zip:zip压缩文件
  • gulp-autoprefixer:自动为css添加浏览器前缀
  • gulp-sass:编译sass
  • gulp-babel:将ES6代码编译成ES5

这里将本文所用到的插件都安装进去:

 cnpm i gulp gulp-less gulp-sass gulp-imagemin gulp-concat gulp-connect gulp-content-includer gulp-jslint gulp-minify-css gulp-uglify gulp-watch gulp-rename gulp-autoprefixer gulp-run-sequence -S-dev

这里可以看到package.json中已经有了相关依赖

"dependencies": {
    "gulp": "^4.0.2",
    "gulp-autoprefixer": "^7.0.1",
    "gulp-concat": "^2.6.1",
    "gulp-connect": "^5.7.0",
    "gulp-content-includer": "^0.0.7",
    "gulp-imagemin": "^7.1.0",
    "gulp-jslint": "^1.0.10",
    "gulp-less": "^4.0.1",
    "gulp-minify-css": "^1.2.4",
    "gulp-rename": "^2.0.0",
    "gulp-run-sequence": "^0.3.2",
    "gulp-sass": "^4.1.0",
    "gulp-uglify": "^3.0.2",
    "gulp-watch": "^5.0.1"
  }
}

3.1 创建gulpfile.js文件

该文件需要配置在项目根目录下,作用是配置Gulp。文件名必须为gulpfile.js,否则无法执行。

接着我们可以学习几个关于gulp的api,方便我们继续往下看:

// 定义一个 task,声明它的名称, 任务依赖, 和任务内容.
gulp.task(name[, deps], fn)

// 读取文件,参数为文件路径字符串或数组, 支持通配符.
gulp.src(globs[, options])

// 写入文件, 作为pipe的一个流程.文件夹不存在时会被自动创建.
gulp.dest(path[, options])

// 监控文件,执行任务.
gulp.watch(glob [, opts], tasks) or gulp.watch(glob [, opts, cb])

创建一个简单的实例:

var gulp = require('gulp');
gulp.task('default', function() {
 // 将你的默认的任务代码放在这
});

想要执行只需要在终端输入:gulp default/gulp(名称为default时可省略名称)

学习完后我们来正式开始配置一些复杂的任务。

3.2 导入插件

const GulpClient = require("gulp");
const autoPrefixer = require("gulp-autoprefixer");
const less = require("gulp-less");
const minifyCSS = require("gulp-minify-css");
const rename = require("gulp-rename");
const sass = require('gulp-sass');
const concat = require('gulp-concat');
const GulpUglify = require("gulp-uglify");
const imagemin = require("gulp-imagemin");
const runsequence = require('gulp-run-sequence');
const connect = require('gulp-connect');

3.3 编译less文件

需要用到的插件:

// 编译less文件
GulpClient.task('less',() => {
    return GulpClient.src('./css/**/*.less')
    .pipe(less())//编译less
    .pipe(minifyCSS())//简化css
    .pipe(autoPrefixer({
        overrideBrowserslist: ['last 2 version'], // 兼容最新的两个版本
        cascade: false
    }))
    .pipe(rename({
        suffix: '.min' // 将压缩后的css文件名添加上.min
    }))
    .pipe(GulpClient.dest('dist/css'))
})

3.4 编译sass文件

GulpClient.task('sass',() => {
    return GulpClient.src('./css/**/*.{sass,scss}')
    .pipe(sass())
    .pipe(minifyCSS())
    .pipe(rename({
        suffix:'.min'
    }))
    .pipe(GulpClient.dest('dist/css'))
})

3.5 压缩css代码

GulpClient.task('css',() => {
    return GulpClient.src('./css**/*.css')
    .pipe(minifyCSS())
    .pipe(rename({
        suffix:'.min'
    }))
    .pipe(GulpClient.dest('dist/css'))
})

3.6 压缩js代码

GulpClient.task('js',() => {
    return GulpClient.src('./js/**/*.js')
    .pipe(concat('vender.js'))//合并
    .pipe(GulpUglify())//丑化
    .pipe(GulpClient.dest('./dist/js'))//目标文件
})

3.7 压缩图片

GulpClient.task('images',() => {
    return GulpClient.src('./img/**/*.{jpg,png,gif}')
    .pipe(imagemin())//压缩图片
    .pipe(GulpClient.dest('./dist/img'))
})

3.8 输出数据(json/xml等)

GulpClient.task('data',() => {
    return GulpClient.src('./data/**/*.{json,xml}')
    .pipe(imagemin())//压缩图片
    .pipe(GulpClient.dest('./dist/data'))
})

3.9 复制index.html文件到产品目录dist下

GulpClient.task('copy-index',() => {
    return GulpClient.src('index.html')
    .pipe(GulpClient.dest('./dist/'))
})

4. 编译所有文件(执行所有任务)

直接在终端运行gulp build即可

GulpClient.task('build',GulpClient.series(['less','sass','css','js','images','data','copy-index','html']),() => {
    runsequence('concat');
    console.log('编译成功');
})

4.1 自动监视

GulpClient.task('watch',async () => {
    GulpClient.watch('./css/**/*.less',GulpClient.series(['less']))
    GulpClient.watch('./css/**/*.{sass,scss}',GulpClient.series(['sass']))
    GulpClient.watch('./css**/*.css',GulpClient.series(['css']))
    GulpClient.watch('./js/**/*.js',GulpClient.series(['js']))
    GulpClient.watch('./img/**/*.{jpg,png,gif}',GulpClient.series(['images']))
    GulpClient.watch('./data/**/*.{json,xml}',GulpClient.series(['data']))
    GulpClient.watch('index.html',GulpClient.series(['copy-index']))
    GulpClient.watch('./html/**/*.html',GulpClient.series(['html']))
})

4.2 在服务端启动

GulpClient.task('server',async () => {
    connect.server({
        root:'dist',
        livereload:'true'//热加载
    })
})

4.3 设置自动化

GulpClient.task('default',GulpClient.series('build','server'))
使用Gulp构建前端项目:完整指南 本文还有配套的精品资源,点击获取 简介:前端开发中的构建过程至关重要,Gulp是一个基于Node.js的流构建系统,可以简化和自动化构建任务。本指南将全面介绍Gulp,包括其简介、优势、安装和设置、任务编写以及如何使用Gulp进行构建。通过提供的示例项目,你可以深入了解Gulp的实际应用,提升前端开发效率和产品质量。 1. Gulp简介 Gulp是一个基于流的构... 阅读详情

相关推荐

gulp自动化构建实践:从文件编译到项目管理

在本章节中,我们介绍了如何全局和项目本地安装gulp,创建了基础的文件,并定义了一个执行压缩JavaScript文件任务的示例。理解这些基础知识对于深入学习gulp的高级特性是非常重要的。接下来的章节将会继续扩展gulp的使用,包括如何设置默认任务、并行与串行任务执行、监听文件变化等实际应用场景。通过以上实践,我们可以看到gulp不仅提供了基本的任务执行方法,还具备了处理复杂工作流的能力。通过灵活的API设计,gulp能够适应多种不同的项目需求,帮助开发者高效地构建现代化的前端项目。

weixin_42584586的博客 1064

使用gulp来构建项目

gulp是一个前端构建的工具,用来快速进行一些操作。比如开发一个项目的时候,设计师给你的照片一般都是一个高清的图,但是这些资源往往是很大的。那你要压缩图片的话是不是要找一个网站去将图片一个一个的进行压缩呢。显然,这样的操作是很麻烦的。那么我们就可以利用gulp来进行这一项的操作。此外,还可以利用一些gulp的插件来进行别的操作,比如压缩js、css 、html代码等,还可以用来混淆js代码,合并js代码等。还可以自动加载、把目录下的所有文件进行重命名等等的操作。下面我们来进入gulp的学习 学...

梁婉玲krysliang的博客 957

ROS Noetic下Gazebo仿真:从零搭建两轮差速机器人(含ros_control配置避坑指南)

本文详细介绍了在ROS Noetic环境下,使用Gazebo从零搭建两轮差速机器人并进行仿真的完整流程。核心内容包括利用Xacro进行模块化建模,并重点解析了通过ros_control框架配置机器人运动控制的详细步骤与常见避坑指南,帮助开发者成功实现机器人在仿真环境中的差速驱动与运动控制。

game4的博客 621

Node 的使用

Evernote Export 一、为什么要用Node环境: js是一个脚本文件,不能直接用来操作文件 但是,在项目过程中,免不了需要经常操作一些文件,包括移动复制压缩上传修改等 如果重新学习C之类底层操作的语言的未免成本太高,此时node的横空出世,解决了这个问题 因为node使用了js的语法,而且使用js的人也越来越多,node就...

weixin_45566163的博客 398

傅里叶光学(1)

傅里叶光学,可以看作是通信理论中傅里叶变换等一系列数学思想以及系统理论与光学(主要是衍射光学)相结合的产物关于傅里叶光学的应用领域,本节介绍了成像,当然事实上不可能仅限于成像,经典的还如激光散斑的一些应用,干涉计量,还有傅里叶变换光谱学等等。最后总结一下,傅里叶光学我认为可以看做一个工具,对于任意的系统,它能给出一些数学思想与物理原理进行解释和分析,找出系统的扰动和响应的关系,或者说根据扰动和响应,来研究或者设计一个系统。

m0_53607446的博客 1680

Xilinx IP库在Modelsim/Questasim中的高效仿真实践

本文详细介绍了在Modelsim/Questasim中高效仿真Xilinx FPGA设计的核心方法。针对仿真时常见的IP核缺失错误,重点解析了两种主流解决方案:使用Vivado的compile_simlib命令自动编译完整仿真库,以及利用export_simulation命令为特定工程生成仿真脚本。文章还提供了手动配置库的深入理解、实战排错步骤及高级避坑指南,帮助用户构建稳定、高效的独立仿真环境。

sony5的博客 1230

工作中如何使用GULP构建项目?

注意:这篇文章假定你具备较好的JS基础,可以独立完成小规模的项目 你甚至应该知道,常见的各种JS函数库和插件 同时,你应该具备一定的项目部署的常识,例如知道真正部署在服务器上的文件,跟开发的时候编写的文件是不同的 再同时,你必须要具备nodeJS的一些最基本知识。例如使用npm命令安装软件等,知道nodeJS如何加载模块 如果你用过sass或者less那就更好不过了。 最重要的,就是你需要知道常见的命令行操作,例如cd、cd … 假设你没听说过sass甚至不知道node为何物,JQuery不熟,甚至没用JS

bj_jikejiuye的博客 533

ros_gz_bridge__镜像__readme

Run。

1113

LaBSE性能优化技巧:7个方法提升多语言嵌入计算效率

LaBSE(Language-agnostic BERT Sentence Embedding)是一个强大的多语言句子嵌入模型,支持109种语言,能够将不同语言的文本映射到统一的向量空间中。对于处理大规模多语言文本数据的开发者和研究人员来说,优化LaBSE的计算效率至关重要。本文将分享7个实用的LaBSE性能优化技巧,帮助你显著提升多语言嵌入计算效率。 ## 📊 理解LaBSE模型架构 La

gitblog_00112的博客 871

领域知识图谱构建的技术流程

因此概念的属性定义十分重要,通常大部分知识库中的概念属性都是采用人工定义等方式生成的,通用知识图谱则可以从开放数据集中获取概念的属性,然后从在线百科中学习实体的属性,并对实体属性进行往上规约从而生成概念的属性。由于百科的分类体系都是经过了百科管理员或是高级编辑人员的校验,其分类系统中的数据可靠性非常高,因此从百科中抽取概念和实体,通常将标题作为实体的候选,而将百科中的分类系统直接作为概念的候选。为了对知识进行合理的组织,更好地描述知识本身与知识之间的关联,需要对知识图谱的模式进行良好的定义。

weixin_43961909的博客 334

Debezium系列之:深入理解 Debezium Topic的设置要求

Debezium系列之:配置 Debezium Topic

zhengzaifeidelushang的博客 1009

gulp实现自动化构建项目

首先,先来设定一个简单的需求: 一个本地开发环境,具备监控文件变化并实时更新的功能 修改代码,保存之后浏览器自动刷新 实时编译各种预编译格式文件 压缩合并静态资源,打包输出 部署上传 搭建环境 1.首先新建一个项目文件夹,并从控制台进入该文件夹 2.初始化项目 注:初始化项目 npm init ,然后回车回车回车···yes,就会在项目中默认创建一个package.jso...

Yana_li的博客 1183

时间序列预测 | Python实现ARIMAX和VARMAX时间序列数据预测

时间序列预测 | Python实现ARIMAX和VARMAX时间序列数据预测 目录时间序列预测 | Python实现ARIMAX和VARMAX时间序列数据预测基本介绍ARIMAXVARVARMAVARMAXSESHWES参考资料 基本介绍 本文介绍ARIMAX、VAR、VARMA和VARMAX基本概念及其Python程序设计。 ARIMAX 具有外源回归量的自回归整合移动平均值(ARIMAX)是 ARIMA 模型的扩展,其还包括外生变量的建模。 外生变量也称为协变量,可以被认为是并行输入序列,其在与

前程算法屋的博客 6689

使用 Gulp 完成项目的自动化构建

首先 npm init 创建一个 package.json 在 package.json 里面添加一个配置项中添加 bin “bin”: { “pages-boilerplate”: “cli.js” }, 在根目录下创建一个cli.js文件,里面写下面的内容,顶格写注释(必写) #!/usr/bin/env node console.log(‘cli working!’) 在当前目录中运行npm link,会自动创建一个package-lock.json文件 花括号里的name,...

weixin_46261261的博客 227

手把手教你用LabelImg打造专属YOLO数据集:从标注到训练全攻略!

YOLO(You Only Look Once)是一种快速、高效的目标检测算法。它使用一种简洁的.txt文件格式来保存每张图片中的标注信息,适合构建自定义目标检测数据集。🔹 图像文件.jpg.png等;每张图片将对应一个同名的标签文件(.txtdog.jpg对应dog.txt;图像在训练前通常会被缩放成统一尺寸,例如 YOLOv3 默认输入为416x416。🔹 标签文件(.txt)是一个纯文本文件;每一行表示一个标注目标;字段说明类别编号,从0开始,例如:狗是0,猫是1x_center。

FJN110的博客 2466

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

如何用 Gulp 构建自动化项目

1、npm安装gulp全局:npmaddgulp-g 2、yarn安装gulp:yarnaddgulp--dev 3、新建一个文件夹,之后初始化项目 makdirpages-boilerplate新建文件夹 yarninit--yes会出现一个pageage.json 4、项目根目录新建gulpfile.js文件,配置任务 const { src, dest, parallel, series, ...

weixin_37883657的博客 233

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

gulp项目自动化打包构建工具

生产环境:用户访问的项目环境 开发环境:开发人员进行程序代码开发使用的环境 一、gulp项目自动化打包构建工具 --操作对象 项目 --构建打包 将开发环境写的代码构建打包部署到生产环境 二、使用 1、安装gulp 全局安装使用gulp命令: npm i gulp -g 本地安装使...

Joker0322的博客 687

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

[万字详解,学习案例] 使用 gulp 去进行自动化构建一个项目

关于 gulp 的更细致的讲解,可以参考上文:逐步详解如何使用 gulp 去进行自动化构建。不看问题也不大,都是手把手地实现,也会带注释。 实现的内容包括: 编译和压缩CSS 编译和压缩JavaScript 编译和压缩HTML 压缩图片 压缩字体 cv其他所需项目 自动化构建流程,并完成打包任务

GoldenaArcher的博客 1456

gulp4.0构建自动化项目

gulp的官网虽然提供了api说明,但实际构建一个自动化项目还需要安装各种依赖。网上查询了很多资料,大部分不完整或者但具体构建的时候总会因为各种依赖版本原因报出异常。这里通过参考资料再结合自己的需求做了一套基本的配置加说明 首先安装依赖方面package.json { "name": "glupdemo", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "dev": "gulp de

艾路菲尔博客 861

gulp 自动化构建html项目--自动刷新

使用gulp自动化构建项目是前端学习的重要部分,gulp依赖于node.js.首选电脑要配置node和npm。   查看node版本号 node --version   查看npm 版本 npm --version   一、安装gulp   1、全局安装gulp npm install gulp –g   我...

weixin_30919429的博客 169

使用 Gulp和Grunt分别完成项目的自动化构建

使用 Gulp 完成项目的自动化构建 使用 gulpfile.js 使用 module.exports 导出了 build、dev、clean,所以我们可以通过 gulp 调用这三个任务 gulp build gulp dev gulp clean 详解 gulpfile.js 处理 html 文件 我们需要安装gulp-htmlmin、swig两个插件 首先我们使用 swig 编译 html,并将数据对象中的变量注入模板,设置不缓存页面;后续我们将使用gulp-htmlmin,对 html 文件进行压缩

qq_32090185的博客 3862

基于gulp构建的angular1.x自动化项目

基于gulp构建的angular1.x自动化项目

I大俊 2079

用gulp自动化构建项目

Gulp 是一个自动化工具,前端开发者可以使用它来处理常见任务: 搭建web服务器 文件保存时自动重载浏览器 使用预处理器如Sass、LESS 优化资源,比如压缩CSS、JavaScript、压缩图片 安装 Gulp官网 有详细的安装教程,我以前也有篇文章介绍如何安装gulp的,本篇文章就不写了。 初始化项目 在项目文件夹下打开终端执行npm init...

乐我所乐的博客 388

前端项目自动化构建工具gulp

为什么80%的码农都做不了架构师?>>> ...

weixin_33753845的博客 150

Gulp.js - 简单、直观的自动化项目构建工具

  Gulp.js 是一个简单、直观的构建系统。崇尚代码优于配置,使复杂的任务更好管理。通过结合 NodeJS 的数据流的能力,你能够快速构建。通过简单的 API 接口,只需几步就能搭建起自己的自动化项目构建工具。 您可能感兴趣的相关文章 太赞了!超炫的页面切换动画效果【附源码下载】 真是好东西!13种非常动感的页面加载动画效果 你见过吗?9款超炫的复选框(Checkbox)效果 ...

weixin_34166472的博客 102
上一篇: 跨域解决方式——JSONP,CORS
下一篇: webpack的生产模式与开发模式详情
小牲口online
博客等级 码龄8年 116粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值