gulpfile配置及常用插件

Gulpfile.js 配置与实践 Gulp是一个基于Node.js的自动化构建工具,它使用Node.js流行的stream来处理文件,与传统的基于任务的构建工具相比,Gulp能以更高效的方式完成自动化任务,极大地提升了开发效率。首先,我们需要了解Gulpfile.js,它是Gulp的核心,负责定义任务并执行任务。在项目根目录下创建一个名为的文件,并将其添加到版本控制系统中,这是一个良好的实践。初始化Gulpfile.js非常简单,需要引入Gulp模块,然后使用函数定义你的任务。 阅读详情
需求:
实现开发模式下启动服务器,文件修改后实现自动重载(热更新);打包模式下进行文件压缩与版本更新(防止缓存)。
gulp版本为4.0.2
package.json scripts 与 devDependencies 依赖包安装
{
  "name": "gulp",
  "version": "1.0.0",
  "description": "",
  "main": "src/ts/index.js",
  "scripts": {
    "start": "gulp",
    "build": "gulp build",
    "tsc": "gulp tsc",
    "clean": "gulp clean"
  },
  "author": "ys",
  "license": "ISC",
  "dependencies": {},
  "devDependencies": {
    "del": "^5.1.0",
    "gulp": "^4.0.2",
    "gulp-connect": "^5.7.0",
    "gulp-cssmin": "^0.2.0",
    "gulp-htmlmin": "^5.0.1",
    "gulp-rev": "^9.0.0",
    "gulp-rev-collector": "^1.3.1",
    "gulp-sass": "^4.0.2",
    "gulp-typescript": "^6.0.0-alpha.1",
    "gulp-uglify": "^3.0.2",
    "open": "^7.0.0",
    "typescript": "^3.7.3"
  }
}
插件引用
const {src, dest, watch, parallel, series} = require('gulp');
const connect = require('gulp-connect'); //启动本地服务
const open = require("open"); //打开浏览器
const del = require('del'); //删除文件及文件夹
const sass = require('gulp-sass'); //sass、scss编译
const ts = require('gulp-typescript'); //编译ts
const rev = require("gulp-rev"); //文件版本号
const revCollector = require("gulp-rev-collector"); //文件版本号映射
const uglify = require("gulp-uglify");     //js文件压缩
const cssmin = require("gulp-cssmin");     //css压缩
const htmlMin = require("gulp-htmlmin");   //html文件压缩
变量配置
const app = {
    srcPath: 'src/',        //项目根目录
    buildPath: 'dist/',     //发布模式根目录
    devPath: 'dev/',        //开发模式根目录
    revPath: 'rev/'         //版本号根目录
};

let html_min_options = {
    collapseWhitespace: true,                //压缩HTML
    collapseBooleanAttributes: true,         //省略布尔属性的值
    removeComments: true,                    //清除HTML注释
    removeEmptyAttributes: true,             //删除所有空格作属性值
    removeScriptTypeAttributes: true,        //删除<script>的type="text/javascript"
    removeStyleLinkTypeAttributes: true,     //删除<style>和<link>的type="text/css"
    minifyJS: true,                          //压缩页面JS
    minifyCSS: true                          //压缩页面CSS
};
删除【开发模式】与【发布模式】生成的文件与文件夹
function clean(cb) {
    return del([app.devPath, app.buildPath, app.revPath], cb)
}
开发模式【DEV】任务
function image() {
    return src(app.srcPath + 'images/**/*')
        .pipe(dest(app.devPath + 'images'))
        .pipe(connect.reload());
}

function css() {
    return src(app.srcPath + 'scss/**/*.scss')
        .pipe(sass())
        .pipe(dest(app.devPath + 'css'))
        .pipe(connect.reload());
}

function tsc() {
    return src(app.srcPath + 'ts/**/*.ts')
        .pipe(ts())
        .pipe(dest(app.srcPath + 'js'));
}

function js() {
    return src(app.srcPath + 'js/**/*.js')
        .pipe(dest(app.devPath + 'js'))
        .pipe(connect.reload());
}

function html() {
    return src(app.srcPath + '**/*.html')
        .pipe(dest(app.devPath))
        .pipe(connect.reload());
}

function server(cb) {
    /*设置服务器*/
    connect.server({
        root: [app.devPath],    //要运行哪个目录
        livereload: true,       //是否热更新
        port: 5000              //端口号
    })
    open("http://localhost:5000")

    watch(app.srcPath + 'images/**/*', image);
    watch(app.srcPath + 'scss/**/*.scss', css);
    watch(app.srcPath + 'ts/**/*.ts', series(tsc, js));
    watch(app.srcPath + 'js/**/*.js', js);
    watch(app.srcPath + '**/*.html', html);
    cb()
}
发布模式【BUILD】任务
function image_build() {
    return src(app.srcPath + 'images/**/*')
        .pipe(rev())
        .pipe(dest(app.buildPath + 'images'))
        .pipe(rev.manifest())
        .pipe(dest(app.revPath + 'images'));
}

function scss_build() {
    return src(app.srcPath + 'scss/**/*.scss')
        .pipe(sass())
        .pipe(dest(app.srcPath + 'css'));
}

function css_build() {
    return src(app.srcPath + 'css/**/*.css')
        .pipe(rev())
        .pipe(cssmin())
        .pipe(dest(app.buildPath + "css/"))
        .pipe(rev.manifest())
        .pipe(dest(app.revPath + 'css'));
}

function css_clean(cb) {
    return del([app.srcPath + 'css'], cb);
}

function tsc_build() {
    return src(app.srcPath + 'ts/**/*.ts')
        .pipe(ts())
        .pipe(dest(app.srcPath + 'js'));
}

function js_build() {
    return src(app.srcPath + 'js/**/*.js')
        .pipe(rev())
        .pipe(uglify())
        .pipe(dest(app.buildPath + 'js/'))
        .pipe(rev.manifest())
        .pipe(dest(app.revPath + 'js'));
}

function image_rev_collector() {
    return src([app.revPath + "**/*.json", app.buildPath + "**/*.css"])
        .pipe(revCollector({replaceReved: true}))
        .pipe(dest(app.buildPath + '/'));
}

function html_build() {
    return src([app.revPath + "**/*.json", app.srcPath + "**/*.html"])
        .pipe(revCollector({replaceReved: true}))
        //.pipe(htmlMin(html_min_options))
        .pipe(dest(app.buildPath + '/'));
}

function build_clean(cb) {
    return del([app.revPath, app.buildPath], cb);
}

代码地址

Gulp的文件同步插件Gulp-File-Sync.zip 这是一款 Gulp 的插件,其功能是使源目录和目标目录之间的文件操作保持同步,当检测到源目录的文件有增加/删除/更新时,会自动同步到目标目录。Github:https://github.com/kayo5994/gulp-file-sync安装npm install --save-dev gulp-file-sync使用var gulp = require('gulp'),     fileSync = require('gulp-file-sync'); gulp.task('sync', function() {   gulp.watch(['src/*.*'], function() {     fileSync('src', 'dest', {recursive: false});   }); });API 列表fileSync('source directory', 'destination directory', options)'source directory' and 'destination directory'type: String当 'source directory' 目录发生任何文件变化时会自动同步到 'destination directory' 目录。options.recursivetype: Booleandefault: true是否对目录递归调用。options.ignoretype: string or array or regex or function排除特定的文件,支持字符串,正则,函数(返回值是被排除的文件),例如:// ignore all .log files fileSync('source directory', 'destination directory', {   ignore: '.log'   }) fileSync('source directory', 'destination directory', {   ignore: [/^\.log$/i, '.cache'] // Exclude all .log and .cache files }) fileSync('source directory', 'destination directory', {   ignore: /^\.log$/i  }) fileSync('source directory', 'destination directory', {   ignore: function(dir, file) {             return file === '.log';           }  })options.addFileCallbacktype: function(fullPathSrc, fullPathDest)default:var gutil = require('gulp-util'); function(fullPathSrc, fullPathDest) {   gutil.log('同步增加文件到 '   fullPathDest); }当 source directory 有新增文件时会调用该方法。fullPathSrc - source directory 目录中新增文件的路径。fullPathDest - destination directory 目录中同步新增的文件的路径。options.deleteFileCallbacktype: function(fullPathSrc, fullPathDest)default:var gutil = require('gulp-util'); function(fullPathSrc, fullPathDest) {   gutil.log('同步删除文件 '   fullPathDest); }当 source directory 有文件被删除时会调用该方法。fullPathSrc - source directory 目录中被删除文件的路径。fullPathDest - destination directory 目录中同步删除的文件的路径。options.updateFileCallbacktype: function(fullPathSrc, fullPathDest)default:var gutil = require('gulp-util'); function(fullPathSrc, fullPathDest) {   gutil.log('同步修改文件 '   fullPathDest); }当 source directory 有文件被修改时会调用该方法。fullPathSrc - source directory 目录中被修改文件的路径。fullPathDest - destination directory 目录中同步修改的文件的路径。options.beforeAddFileCallbacktype: function(fullPathSrc)当 source directory 有新增文件,但并未开始同步时调用该方法。fullPathSrc - source directory 目录中新增文件的路径。options.beforeDeleteFileCallbacktype: function(fullPathSrc)当 source directory 有文件被删除,但并未开始同步删除时调用该方法。fullPathSrc - source directory 目录中被删除文件的路径。options.beforeUpdateFileCallbacktype: function(fullPathSrc)当 source directory 有文件被修改,但并未开始同步修改时调用该方法。fullPathSrc - source directory 目录中被修改文件的路径。 标签:GulpFileSync 立即下载

相关推荐

前端开源库-gulp-file-inline

前端开源库-gulp-file-inlinegulp文件inline,内联JS/CSS文件的gulp插件。

gulpfile 编译运行_整理笔记:前端工程构建工具gulp篇

gulp ,基于 NodeJS 的项目,自动化构建的工具增强你的工作流程!一、工作原理前端构建工具,gulp是基于Nodejs,自动化地完成 javascript、coffee、sass、less、html/image、css 等文件的测试、检查、合并、压缩、格式化、浏览器自动刷新、部署文件生成,并监听文件在改动后重复指定的这些步骤。借鉴了Unix操作系统的管道(pipe)思想,前一级的输出,直接...

weixin_32058931的博客 553

process插件_利用SPSS 插件MLmed检验多水平中介的调节模型

本文介绍一个SPSS插件,用于检验多水平中介的调节,及该方法与Mplus的比较。1 Mlmed 简介及安装Mlmed 简介: Mlmed 由Rockwood 2017年开发,基于SPSS插件计算Multilevel moderated mediation. 可以提供multilevel mediation Monte Carlo 置信区间比如(模拟20000次),以及多水平调节的...

weixin_39976081的博客 5780

gulp详细配置 gulpfile.js

项目上配置的gulp配置文件,省的以后重新配置。 // gulpfile.js const gulp = require('gulp') const babel = require('gulp-babel') const sass = require('gulp-sass') const fileSystem = require('fs') const watch = require('gulp...

weixin_43968658的博客 767

别再只看读写速度了!聊聊手机闪存eMMC、UFS3.1和SSD背后的功耗与体积玄学

本文深入探讨手机闪存技术eMMC、UFS3.1和SSD在功耗与体积设计上的关键差异。通过对比接口技术、封装工艺和温度管理,揭示移动存储如何在有限空间内平衡性能与能效,为消费者提供选购参考。重点关注UFS3.1的差分信号设计和全双工架构带来的显著优势。

weixin_27061475的博客 449

AI 算力基础设施深度系列(一):从容器到 Kubernetes——算力底座的诞生

1. 容器 = Namespace(视图隔离) + Cgroup(资源限制) + Union FS(镜像分层)└── 不是虚拟机!共享内核,接近零开销2. K8S 三大设计哲学:└── 声明式 API + 控制循环 + 可扩展架构3. K8S 架构:└── 控制面 (API Server / etcd / Scheduler / Controller Manager)

warm3snow的博客 535

写一份gulp常用配置文件,构建前端工作流

目录目录 前言 创建项目 初始化项目 创建目录结构 编写Gulp配置 创建gulp的config文件 创建gulp的dev文件 创建gulp的prod文件 调用dev和prod方法 运行gulp 定义脚本scripts 附录前言  上回写了一篇关于《一份gulp的配置文件》的文章。其中已经提及了简单项目中gulp的配置。   在使用实践的过程中,发现这样的一份配置并不太“友好”,没有区分开发环境和

梦空间 1万+

73、结合无人机进行rk3588oak-lite跟踪目标物体进行识别、跟踪

搭建仿真转换模型环境,主要python版本和我下载的rknn2的版本。截取shape节点,输出模型。so库也要对应转模型的whl。其中安装的whl版本。

sxj731533730 1624

Gulp的基本使用

Gulp是自动化构建的一款工具 基本使用 yarn init yarn add gulp –dev code gulpfile.js // 创建一个gulpfile.js文件 // gulp的入口文件 // 最新的gulp中取消了同步任务,每一个任务都是异步任务 // 当我们的任务执行完成后需要调用回调函数或其他方式去标记任务已完成 exports.foo = done => { console.log('foo task working~') done() // 标识任务完成 } // 默认导

qq_45487080的博客 360

在Simulink中构建感应电机的时滞补偿控制模型,并通过仿真验证不同补偿策略的有效性

核心优势Smith预估器可有效补偿已知时滞,提升系统稳定性。动态PID调整适用于时变时滞的初步补偿。扩展方向自适应时滞估计:结合Luenberger观测器实时估计时滞。鲁棒控制:引入H∞控制或滑模控制抑制参数不确定性。网络化时滞补偿:结合知识库[2]的网络延迟模型,实现端到端补偿。

amy_mhd的博客 190

使用C++实现DNS欺骗攻击

其中,domain_name表示需要欺骗的域名,dns_server_ip表示实际DNS服务器的IP地址,fake_ip表示需要重定向到的IP地址。在DNS查询过程中,当客户端向DNS服务器请求解析某个域名时,DNS服务器会返回该域名对应的IP地址。DNS劫持是一种常见的网络攻击方式,通过篡改DNS响应数据,使得用户访问的网站被重定向到攻击者指定的恶意站点。我们使用C++编写一个简单的DNS欺骗程序,使得当客户端请求解析特定的域名时,我们可以将其重定向到指定的IP地址。使用C++实现DNS欺骗攻击。

TechGlide的博客 412

gulpfile 编译运行_Gulp入门教程

###Gulp介绍* 中文主页: http://www.gulpjs.com.cn/* gulp是与webpack功能类似的**前端项目构建**工具, 也是基于Nodejs的自动**任务运行器*** 能自动化地完成 javascript/coffee/sass/less/html/image/css 等文件的合并、压缩、检查、监听文件变化、浏览器自动刷新、测试等任务* gulp更高效(异步多任务)...

weixin_28841265的博客 620

ZYNQ PL通过EMIO ETHE1外接PHY由GMII转RGMII

1,设置EMIO方式引出ETHE1 2,从GMII过度到RGMII GMII: 发送 gmii_tx_clk gmii_tx_d[7:0] gmii_tx_en gmii_tx_er 接收 gmii_rx_clk gmii_rx_d[7:0] gmii_rx_dv gmii_rx_er RGMII: 发送 tx_clk tx_d[3:0] tx_ctrl 接收 rx_clk rx_d[3:0] rx_ctrl 首先数据总线从时钟单边沿采样8bit转变为了双边沿采样4bit,从88E1

wangjie36的博客 1万+

gulpfile.js 项目配置

gulpfile.js 配合 package.json使用 首先,使用确定项目使用gulp自动化工具。 1.创建项目文件夹,project1,打开此文件夹,查看是否安装了node -v 2.git bash here , npm init,创建package.json配置文件 3.npm install gulp --save-dev 安装gulp 4.创建gulpfile.js...

Dolores_me的博客 1944

2026 Claude Code 标准化前端UI SKILL——Frontend Design

是 Anthropic 官方开源的技能包,在 Claude 官方插件站中排名第一,超过 52k 的下载量。场景推荐方案快速体验批量安装官方 Skills深度设计策略叠加完整打磨流程集成终端跑claude一句话总结:Frontend Design 不是给 AI 加新能力,而是给 AI 加审美标准。它让 AI 从“能画”变成“会设计”——先想清楚风格,再动手写代码。

十年老程序猿,AI 疯狂研究专家,前沿硬核知识分享 3617

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

gulp及gulpfile.js编写示例

本文主要记录一个gulpfile.js示例,以免以后用的时候遗忘。但首先还是要了解gulp是什么以及如何使用。 一、什么是gulp 简单来说:就是压缩前端代码,实现浏览器自动刷新的工具。 完整地说:gulp是一个前端的自动化构建工具,是基于Node.js的自动化任务运行期,能自动化完成javascript/sass/less/html/image/css等文件的测试、检查、合并、压缩、格式化...

Xhiu_huang的博客 6351

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

node入门(二)——gulpfile.js初探

  本文关于gulpfile.js怎么写,利于完成个性化需求。本文开发环境默认已安装node,详情参考《node入门(一)——安装》。   一、安装gulp npm install -g gulp   二、进入项目根目录,创建package.json文件 npm init   现在项目目录下新增了package.json文件,内容如下:   三、在pa...

ala9527的博客 169

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

gulp的安装&less插件

gulp简介 gulp是基于Nodejs的自动任务运行器, 它能自动化地完成 javascript/coffee/sass/less/html/image/css 等文件的的测试、检查、合并、压缩、格式化、浏览器自动刷新、部署文件生成,并监听文件在改动后重复指定的这些步骤 gulp安装 首先安装node.js,通过node.js的npm全局安装和项目安装gulp,其次在项目里安装所需要的gulp插件

dr_920393252的博客 587

Sublime Gulp 插件常见问题解决方案

Sublime Gulp 插件常见问题解决方案 Sublime Gulp 是一个 Sublime Text 编辑器的插件,它提供了对 Gulp 的集成,允许开发者在编辑器中直接运行和监控 Gulp 任务。该插件主要使用 JavaScript 和 Python 编程语言。 新手常见问题及解决步骤 问题一:无法安装 Sublime Gulp 插件 问题描述: 用户尝试通过 Package Contro...

gitblog_00101的博客 375

gulpfile.js文件创建与配置

安装gulp1.通过npm包安装(前提是已经安装了nodejs环境 和 npm)npm install gulp -g2.在全局安装完gulp后,运行gulp -v 可以查看gulp版本号3.这里稍微介绍一下命令的含义:因为npm安装插件的命令行格式为 npm install project-name -g --save-dev说明一下上面(npm install project-name -g –

知行合一 2633

gulp安装流程、使用方法及CMD常用命令导览

gulp安装流程、使用方法及CMD常用命令导览     一、名词介绍: Npm——node包管理工具 一开始我不理解,包管理工具是什么鬼。后来用到的gulp也好,gulp的插件包也好,都是要在npm这个里边弄出来的。 可以理解为,一个硬盘,里边放的各种整理好的、适用于各种功能的且不重复的文件夹(插件),然后我们需要啥,就去里边摘下来。 当然也可以用它来删除插件 rimraf删...

weixin_45073548的博客 254

gulp入门11:gulp-concat合并文件

gulp-concat是一个用于合并多个文件(通常是JavaScript文件)的Gulp插件。以下是关于gulp-concat的详细教程,内容清晰、分点表示并归纳了关键信息。

785

gulp的安装和使用

gulp的安装和使用gulp安装前需有nodejs和npm环境(最好用cnpm) npm介绍 说明:npm(node package manager)nodejs的包管理器,用于node插件管理(包括安装、卸载、管理依赖等); 使用npm安装插件:命令提示符执行npm install [-g] [–save-dev];:node插件名称。例:npm install gulp-less –save

胡桃夹子 1172

第2章{ 2-14 [选学]读懂bee的gulpfile.js }

[选学]读懂bee的gulpfile.js 本节内容为选学,建议深入掌握gulp使用的同学学习。 一个kissy工程的构建需要包含如下部分: kissy包模块合并kissy模块转换,比如cmd模块转换成KISSY.add()包裹的模块kissy模块编译,比如去掉合并文件中大量的KISSY.add()包裹,用于提高脚本性能xtemplate模板编译,将.xtpl文件编译

XPY567 1071

gulp插件-自动加载插件

gulp的插件数量虽然没有grunt那么多,但也可以说是应有尽有了,下面列举一些gulp常用的插件。 自动加载插件: 使用gulp-load-plugins 安装: npm install --save-dev gulp-load-plugins 要使用gulp的插件,首先得用 require 来把插件加载进来,如果我们要使用的插件非常多,那我们的 gulpfile.js 文件开头可能就会是这样子的: var gulp = require('gulp'), //一些gulp插件,abcd这些命令只是用来举

AndrewNeo 301

Gulp-Svg-Symbols 项目常见问题解决方案

Gulp-Svg-Symbols 项目常见问题解决方案 1. 项目基础介绍 Gulp-Svg-Symbols 是一个基于 Gulp 的插件,用于将多个 SVG 文件转换为一个包含每个 SVG 作为符号的单个 SVG 文件。它适用于那些需要在网页上使用 SVG 图标的开发者。这个项目主要使用 JavaScript 编程语言。 2. 新手常见问题及解决步骤 问题一:如何安装 Gulp-Svg-Symb...

gitblog_00427的博客 928
上一篇: ES6 数组操作相关方法( map filter forEach find findIndex every some reduce )
下一篇: 微信小程序开发流程与常见问题
BewareBeginning
博客等级 码龄10年 1粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值