项目自动化构建工具 - gulp

gulp-pipe:公开您的流而无需放置太多的.pipe() 喉管 在不铺设太多.pipe()情况下公开您的流 摆脱不必要的样板噪声,只关注变化的内容。 将其转为195个非空格字符: return gulp . src ( paths . scripts ) . pipe ( sourcemaps . init ( ) ) . pipe ( to5 ( ) ) . pipe ( concat ( 'index.js' ) ) . pipe ( sourcemaps . write ( '.' ) ) . pipe ( gulp . dest ( paths . dist ) ) . on ( 'error' , function ( e ) { console . log ( e ) ; } ) ; 对此(175 立即下载

gulp 是基于 node 实现 Web 前端自动化开发的工具,利用它能够极大的提高开发效率。

使用gulp前需要安装node,npm。

一、安装gulp:

1、全局安装gulp

npm install gulp -g

2、局部安装(项目内)

npm install gulp --save-dev

二、gulp项目配置文件

在项目下新建 gulpfile.js

配置基本内容:

var gulp = require('gulp');


// 注册一个任务
gulp.task('taskName', function(){
    console.log('执行回调')
})


// 默认任务,执行gulp时自动执行
gulp.task('default',function(){
    console.log('执行回调')
});


运行默认任务:

gulp default    // 默认任务 default可以省略
gulp

运行自定义的任务

gulp taskName

三、合并压缩 js

压缩 js文件需要安装gulp插件:gulp-uglify

npm install gulp-uglify --save-dev

合并 js文件需要安装gulp插件: gulp-concat

npm install gulp-concat --save-dev

合并压缩 js文件的配置:

var gulp = require('gulp');
var uglify = require('gulp-uglify');    // js压缩插件
var concat = require('gulp-concat');    // 合并插件
var rename = require('gulp-rename');    // 重命名插件




// 注册js合并压缩任务
gulp.task('js', function(){
    return gulp.src('js/**/*.js')            // 引入 js/**/下的所有需要压缩的js文件
        .pipe(concat('build.js'))            // 合并后的命名
        .pipe(gulp.dest('dist/js/'))         // 合并后的输出路径
        .pipe(uglify())                      // 执行压缩
        .pipe(rename({ suffix: '.min' }))    // 压缩后的名称,拓展压缩后的后缀添加 .min
        .pipe(gulp.dest('dist/js/'))         // 合并压缩后的输出路径(会继承以上管道的内容)
});


// 默认任务
gulp.task('default',['js']);


四、合并压缩css。gulp-clean-css 和 gulp-minify-css 皆可

合并压缩css文件需要安装的gulp插件(合并后压缩):gulp-clean-css

npm install gulp-clean-css --save-dev

合并压缩css文件需要安装的gulp插件(合并后压缩): gulp-minify-css

npm install gulp-minify-css --save-dev

合并压缩 css文件的配置:

var gulp = require('gulp');
var concat = require('gulp-concat');         // 合并插件
var cssClean = require('gulp-clean-css');    // 引入css压缩插件(两者皆可)
var minifycss = require('gulp-minify-css');  // 引入css压缩插件(两者皆可)
var rename = require('gulp-rename');         // 引入重命名插件




// 注册css的合并压缩任务
gulp.task('css', function () {
    return gulp.src('css/*.css')                // 获取css源文件
        .pipe(concat('build.css'))              // 合并后的命名
        .pipe(gulp.dest('dist/css/'))           // 合并后输出路径
        .pipe(minifycss())                      // 压缩合并后的css
        .pipe(rename({ suffix: '.min' }))       // 压缩后重命名,拓展添加后缀.min
        .pipe(gulp.dest('dist/css/'))           // 压缩后的输出路径
});


// 默认任务
gulp.task('default',['css']);


 

五、编译less。(将less预处理语言编译成css)

编译less需要安装gulp插件: gulp-less

npm install gulp-less --save-dev

编译less的配置:

var gulp = require('gulp');
var rename = require('gulp-less');         // 引入less编译插件




// 注册less的编译任务
gulp.task('less',function () {
    return gulp.src('less/*.less')    // 获取less源文件
        .pipe(less())                 // 将less编译为css
        .pipe(gulp.dest('css/'))      // 输出文件路径
});


// 默认任务
gulp.task('default',['less']);

 

六、压缩html文件

压缩html文件需要安装的插件: gulp-htmlmin

npm install gulp-htmlmin --save-dev

压缩html文件的配置:

var gulp = require('gulp');
var htmlmin = require('gulp-htmlmin');         // 引入html的压缩插件




// 注册html的压缩任务
gulp.task('html', function () {
    return gulp.src('*.html')                            // 获取源文件
        .pipe(htmlmin({collapseWhitespace:true,}))       // 是否去除标签之间的空白
        .pipe(gulp.dest('dist/'))                        // 文件输出路径
});


// 默认任务
gulp.task('default',['html']);

 

 

七、监视文件修改自动进行压缩合并编译

需要安装插件: gulp-livereload

npm install gulp-livereload --save-dev

配置方式:

var gulp = require('gulp');
var uglify = require('gulp-uglify');
var concat = require('gulp-concat');
var rename = require('gulp-rename');
var cssClean = require('gulp-clean-css');
var minifycss = require('gulp-minify-css');
var less = require('gulp-less');
var htmlmin = require('gulp-htmlmin');
var livereload = require('gulp-livereload');



// 注册js合并压缩任务
gulp.task('js', function(){
    return gulp.src('js/*.js')
        .pipe(concat('build.js'))
        .pipe(gulp.dest('dist/js/'))
        .pipe(uglify())
        .pipe(rename({ suffix: '.min' }))
        .pipe(gulp.dest('dist/js/'))
        .pipe(livereload())        // 需要为每个任务添加监视
});

// 注册less的编译任务
gulp.task('less',function () {
    return gulp.src('less/*.less')
        .pipe(less())   // 将less编译为css
        .pipe(gulp.dest('css/'))
        .pipe(livereload())       // 需要为每个任务添加监视
});

// 注册css的合并压缩任务
gulp.task('css', function () {
    return gulp.src('css/*.css')
        .pipe(concat('build.css'))
        .pipe(gulp.dest('dist/css/'))
        .pipe(minifycss())
        .pipe(rename({ suffix: '.min' }))
        .pipe(gulp.dest('dist/css/'))
        .pipe(livereload())       // 需要为每个任务添加监视
});

// 注册html的压缩任务
gulp.task('html', function () {
    return gulp.src('*.html')
        .pipe(htmlmin({collapseWhitespace:true,}))
        .pipe(gulp.dest('dist/'))
        .pipe(livereload())       // 需要为每个任务添加监视
});

// 注册自动任务(半自动)  
gulp.task('watch',function () {
    livereload.listen();    // 开始监听
    gulp.watch('js/*.js',gulp.series('js'))
    gulp.watch('less/*.less',gulp.series('less','css'))
    gulp.watch('css/*.css',gulp.series('css'))
    gulp.watch('*.html',gulp.series('html'))
});



gulp.task('default',['js','less','css','html','watch']);


 

八、热更新(监视文件更新,编译合并压缩后并且自动刷新浏览器中打开的页面)

安装所需插件

npm install gulp-connect --save-dev

配置方式:

var gulp = require('gulp');
var uglify = require('gulp-uglify');
var concat = require('gulp-concat');
var rename = require('gulp-rename');
var cssClean = require('gulp-clean-css');
var minifycss = require('gulp-minify-css');
var less = require('gulp-less');
var htmlmin = require('gulp-htmlmin');
var connect = require('gulp-connect');



// 注册js合并压缩任务
gulp.task('js', function(){
    return gulp.src('js/*.js')
        .pipe(concat('build.js'))
        .pipe(gulp.dest('dist/js/'))
        .pipe(uglify())
        .pipe(rename({ suffix: '.min' }))
        .pipe(gulp.dest('dist/js/'))
        .pipe(connect.reload())        // 给每一个任务添加监视
});

// 注册less的编译任务
gulp.task('less',function () {
    return gulp.src('less/*.less')
        .pipe(less())   // 将less编译为css
        .pipe(gulp.dest('css/'))
        .pipe(connect.reload())        // 给每一个任务添加监视
});

// 注册css的合并压缩任务
gulp.task('css', function () {
    return gulp.src('css/*.css')
        .pipe(concat('build.css'))
        .pipe(gulp.dest('dist/css/'))
        .pipe(minifycss())
        .pipe(rename({ suffix: '.min' }))
        .pipe(gulp.dest('dist/css/'))
        .pipe(connect.reload())        // 给每一个任务添加监视
});

// 注册html的压缩任务
gulp.task('html', function () {
    return gulp.src('*.html')
        .pipe(htmlmin({collapseWhitespace:true,}))
        .pipe(gulp.dest('dist/'))
        .pipe(connect.reload())        // 给每一个任务添加监视
});


// 注册服务器自动更新任务(全自动)
gulp.task('connect',function () {
    // 配置服务器
    connect.server({
        root: 'dist/',  // 配置源文件根目录
        port: '8888',   // 配置端口
        livereload: true,   // 是否自动更新
    })
    gulp.watch('js/*.js',['js'])
    gulp.watch('less/*.less',['less','css'])
    gulp.watch('css/*.css',['css'])
    gulp.watch('*.html',['html'])

});

gulp.task('default',['js','less','css','html','connect']);


 

九、实现跨域

在服务器模式基础上进行实现跨域。

1、安装插件:http-proxy-middleware。

npm install --save-dev http-proxy-middleware

2、引入插件

var proxy = require('http-proxy-middleware');

3、引用示例

// 注册服务器自动更新任务(全自动)
gulp.task('connect',function () {
    // 配置服务器
    connect.server({
        root: 'dist',  // 配置源文件根目录
        port: '8888',   // 配置端口
        livereload: true,   // 是否自动更新

        middleware: function () {    // 作为中间件引用
            return [           // 返回的是一个数组,可定义多个域名代理
                proxy("/api",{        // 跨域域名前缀,前面加入此前缀可代理以下定义的域名
                    target:"https://yourdmain.com/",      // 代理的域名  
                    changeOrigin:true
                })
            ]
        }

    })
    gulp.watch('js/*.js',gulp.series('js'))
    gulp.watch('less/*.less',gulp.series('less','css'))
    gulp.watch('css/*.css',gulp.series('css'))
    gulp.watch('*.html',gulp.series('html'))
});

 

十、gulp4.0与gulp3.0的差异

任务依赖的编写方式有所改变

gulp3.0书写方式:

gulp.task('default',['js','less','css','html','connect'], function(){});

gulp4.0书写方式():

// 任务同步执行
gulp.task('default',gulp.series(['js','less','css','html','connect'], function(){}));
// 任务异步执行
gulp.task('default',gulp.parallel(['js','less','css','html','connect'], function(){}));

gulp4.0以后task方式只接受两个参数

 

 

注:不喜勿喷,欢迎讨论

 

多传感器融合SLAM指南:如何结合视觉与激光雷达提升建图精度 本文深入探讨了多传感器融合SLAM技术,详细解析了如何将视觉传感器与激光雷达(特别是3D激光雷达)进行深度融合以提升建图精度与鲁棒性。文章从传感器特性分析、数据同步标定、前端融合策略(松耦合与紧耦合)到后端优化与地图构建,提供了完整的实战指南,并重点介绍了V-LOAM等经典融合框架的核心思想,旨在帮助开发者构建适应复杂动态环境的高精度SLAM系统。 阅读详情

相关推荐

记录:N10激光雷达串口编程,将数据存进 SQLite,并进行 ROS2 - cartographer 单雷达建图

N10 系列采用 TOF(time of flight)测距原理,通过测量调制激光的发射、返回时间差来测量物体与传感器的相对距离。激光发射器发出调制脉冲激光,内部定时器开始 从t1时刻计算时间,当激光照射到目标物体后,部分能量返回,当雷达接收到返回的激光信号时,在t2时刻停止内部定时器计时,光速C,激光雷达到达物体的距离D为:经过N10系列激光雷达内嵌的信号处理单元的实时解算得到探测物体的距离值,结合高精度自适应角度测量模块输出的角度信息,可以得到量程内周围 360 度环境 的二维平面信息。

m0_74013893的博客 1096

gulp入门3:pipe

在Gulp中,pipe方法是一个核心概念,它允许你将数据从一个任务传递到另一个任务,类似于Unix管道的工作方式。以下是关于Gulp中pipe。

542

示波器学习(一):示波器的作用、类型和基本结构

示波器的作用、使用场景;示波器的类型和基本结构介绍

qq_41300605的博客 9140

gulp的使用(一)

npm安装gulp npm install gulp --save-dev 常用方法 gulp.task(任务名,回调函数)--------定义任务 gulp.src()--------找到需要执行的任务的文件 gulp.dest()------输出文件的目的地,如果某文件夹不存在,将会自动创建它 gulp.pipe()------管道流,接通源头文件与目标文件的输出 gulp.watch...

awsl_666的博客 559

Python读取三菱PLC数据

3、支持自定义的数据读写操作。直接调用Read方法,可以读取到原生的byte数组,然后进行组合数据。1、每次的数据交互您都可以判断是否成功,如果您不判断,如果网络断开或是异常,会影响程序的执行。Qna3E协议的ascii类 MelsecMcAsciiNet。A兼容1E协议的二进制类 MelsecA1ENet。Qna3E协议的二进制类 MelsecMcNet。2、读写操作支持单个数和数组。

weixin_46744807的博客 1998

【初阶】手把手教你轻松上手Denodo | 连接数据库并创建基本视图 (二)

在本教程的第二部分,我们将涵盖:连接到数据库,与创建基本视图。

Denodo的博客 1104

gulp pipe

首先,gulp的源码里没有任何一部分是定义pipe的。 gulp的pipe方法是来自nodejs stream API的。 gulp本身是由一系列vinyl模块组织起来的。 pipe方法到底是什么呢? pipe跟他字面意思一样只是一个管道 例如我有一堆文件 var s = gulp.src(["fileA","fileB","fileC"]) src方法实际上是'vinyl-fs'模...

MrFano的博客 5410

SAP BSP网页开发入门:从SE80创建到MVC实战(附成品展示)

本文详细介绍了SAP BSP网页开发的入门与实战,从SE80环境搭建到MVC架构实现的全流程。通过具体案例和代码示例,帮助开发者掌握业务服务器页面(BSP)技术,提升SAP Web化转型中的开发效率,适用于需要扩展SAP功能的企业场景。

x1y2z的博客 1万+

gulp的使用

Gulp是基于node的一个自动化构建工具,开发者可以使用它构建自动化工作流程,页自动刷新,CSS预处理,代码检测,图片压缩等功能,只需要简单的命令行就可以全部完成。使用它,可以简化工作,让你把重点放在功能的开发上,同时减少人为失误,提高开发的效率和质量。node中的第三方包,通过npm下载gulp 是node中的第三方模块gulp.task(任务名,回调函数)gulp.src(文件路径) 设置文件的路径gulp.pipe() 管道方法 将文件流输出到指定的方法中。

m0_55836496的博客 1056

DPABI安装教程

DPABI是是中科院心理研究所严超赣老师团队开发的一款磁共振脑影像数据分析工具包。基于SPM,在安装DPABI之前需要安装好SPM,才能正常使用。SPM的安装方法见文matlab2021a版本条件下安装spm_kidllll的博客-优快云博客 1、下载安装包 下载地址:DPABI: a toolbox for Data Processing & Analysis for Brain Imaging | The R-fMRI Network 2、将下载好的dpabi文件夹移动到matl..

qq_42356925的博客 1万+

IEC 61400-1:2019 附录 C 湍流模型全面解读

IEC 61400-1:2019 附录 C 全面解读

weixin_46713695的博客 471

快速理解掌握gulp用法

行文步骤: 1、怎么安装 2、怎么使用一、怎么安装 首先你得在自己的电脑中安装nodejs,应为gulp的运行是基于nodejs环境的。 安装完成后,直接npm install gulp -g.(如果不能理解这句代码请百度吧)安装完成后你可以直接在cmd窗口调用gulp功能。 二、怎么使用 gulp的作用? 我们构建一个项目,名称叫app,里面有css文件夹、js文件夹、image文件

简单是书的博客 3774

YOLOv8改进 | Conv篇 | 轻量级下采样方法ContextGuided(大幅度涨点)

ContextGuided通过创新的局部-全局协同机制,解决了传统下采样方法中细节丢失与上下文缺失的核心痛点。实验证明其在YOLOv8上可实现最高2.6%的mAP提升,且计算开销增加不足5%。这种即插即用的设计为实时目标检测系统提供了新的优化方向。创新启示:轻量化不代表简单裁剪,智能信息融合才是未来方向!下一步探索与Transformer结合构建混合架构多尺度上下文融合机制3D点云中的扩展应用资源获取完整训练代码:[GitHub链接]预训练模型:[Google Drive链接]讨论话题。

QQ_778132974的博客 289

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

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

weixin_33753845的博客 150

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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

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

Joker0322的博客 686

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Gulp 自动化的项目构建工具

  在很多场合都会听到前端工和 node 程师推荐 Grunt 来实现项目的自动化,自动化可以自动完成 javascript/coffee/sass/less 等文件的的测试、检查、合并、压缩、格式化、部署文件生成,并监听文件在改动后重复指定的这些步骤。   得益于 Grunt 基于任务的设计模式,这些步骤可以很好的归类执行,让开发效率得到了一次提升,但杀敌 1000,得自损 800 ...

andywang821017的博客 267

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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

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

weixin_34166472的博客 102

使用gulp自动化构建工具搭建项目

gulp是一个自动化构建工具,使用它可以很轻松地执行项目开发过程中的常见任务,这里将基本的gulp的使用方法记录下来。 1、首先,确保安装了node,npm(node -v/npm -v  查看安装版本),同时可以安装cnpm,国内访问会快很多,但是有时候安装一些东西会存在安装不全的问题(npm install -g cnpm --registry=https://registry.npm.ta...

南乔几经秋、的博客 485

使用 Gulp 自动化构建工具快速搭建项目

为了UED前端团队更好的协作开发同时提高项目编码质量,我们需要将Web前端使用工程化方式构建; 目前需要一些简单的功能: 1. 压缩HTML 2. 检查JS 3. 编译SASS 4. 压缩图片 5. 压缩CSS 6. 压缩JS 7. 雪碧图制作 8. 静态服务器 9. 代理解决跨域 10. 打包项目...

weixin_34279061的博客 221

gulp自动化构建工具(二):简单的项目实践

写在前面 匆匆忙忙入门之后,总感觉需要多拿点东西来练习熟悉一下,于是记下了这篇笔记,希望对初学的朋友们能有点帮助。 项目介绍 实验的项目结构如下图所示,只是我随便弄的一个结构,当然这样的结构并不算好结构,但作为练习,就自定义了。 为了实现前端的自动化构建,我们希望,每一次修改项目的文件时,浏览器可以自动刷新、项目目录可以自行刷新等,通过gulp构建一系列的执行任务,就可以达到这个目...

stsfang 223

GULP自动化打包构建工具

GULP gulp 是一个项目开发的 自动化打包构建工具 基于 node 环境来运行的 什么是自动化打包构建工具 比如 我们在开发的过程中,会写到 js 文件,css 文件,等等 我们的项目如果想上线,那么一定要体积小一点,文件大小越小越好 而我们在写 js 文件的时候,会有很多 换行/空格 之类的东西 这些 换行/空格 都是占文件体积的一部分 那么我们在上线之前就要吧这些 换行/空格 尽...

lff18277233091的博客 517

前端构建工具Gulp.js知多少(webpack/gulp/grunt)

@TOC 写在前面 前几天在更新webpack知识的时候,想起来三年前用过的前端构建工具gulp/grunt,遂写个笔记总结一下,出来混总是要还的,忘得七七八八了… 阅读本文章之前,相信你已经对前端构建工具(webpack、gulp、grunt)有一定的认知和了解了,那么他们之间究竟有什么区别呢? 什么是gulp? gulp文档上面有这么一句话$\color{blue} {用自动化构建工具增强...

王一诺Eno 340

使用gulp自动化构建工具,增强项目工作流程

为什么要使用gulp? 你在项目部署到服务器上之前是否还在一个个的压缩js和css文件?如果是,那你就out了;因为gulp可以实时监控你的每个文件,同时生成对应压缩、合并后的文件,为开发提速不少。当然gulp的功能还远不止如此! 安装node.js 因为gulp是基于nodeJS的,所以要先安装node.js。首先去Node.js中文网...

weixin_34194702的博客 81

【Node.js学习笔记】使用Gulp项目自动化构建工具

刚接触node.js,对前端的一些东西还不是很清楚,据说Gulp这东西很强大,先来看看从网上抄的一段关于自动化构建的描述:   在为数众多的中小型软件作坊中,不存在自动化构建和发布工具。构建、交付准备环境、代码发布全由手工完成,同样还有运行测试、备份旧版本、新版本打标签以及许多其他重复的事情。毕竟你可能认为这全是非常简单的工作,集成开发环境通过按钮或快捷键就可构建项目,你开启两个窗口拖放少许文件...

weixin_30699463的博客 102
上一篇: 使用nginx解决浏览器跨域问题
下一篇: 项目自动化构建工具 - grunt
master'z
博客等级 码龄9年 23粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值