常有人拿gulp与webpack来比较,知道这两个构建工具功能上有重叠的地方,可单用,也可一起用,但本质的区别就没有那么清晰。

gulp

gulp强调的是前端开发的工作流程,我们可以通过配置一系列的task,定义task处理的事务(例如文件压缩合并、雪碧图、启动server、版本控制等),然后定义执行顺序,来让gulp执行这些task,从而构建项目的整个前端开发流程。

PS:简单说就一个Task Runner

webpack

webpack是一个前端模块化方案,更侧重模块打包,我们可以把开发中的所有资源(图片、js文件、css文件等)都看成模块,通过loader(加载器)和plugins(插件)对资源进行处理,打包成符合生产环境部署的前端资源。

PS:webpack is a module bundle

相同功能

gulp与webpack可以实现一些相同功能,如下(列举部分):

功能 gulp webpack
文件合并与压缩(css) 使用gulp-minify-css模块
gulp.task('sass',function(){
     gulp.src(cssFiles)
     .pipe(sass().on('error',sass.logError))
     .pipe(require('gulp-minify-css')())
     .pipe(gulp.dest(distFolder));
});
样式合并一般用到extract-text-webpack-plugin插件,
压缩则使用webpack.optimize.UglifyJsPlugin。
文件合并与压缩(js) 使用gulp-uglify和gulp-concat两个模块 js合并在模块化开始就已经做,
压缩则使用webpack.optimize.UglifyJsPlugin
sass/less预编译 使用gulp-sass/gulp-less 模块 sass-loader/less-loader 进行预处理
启动server 使用gulp-webserver模块
var webserver =require('gulp-webserver');
gulp.task('webserver',function(){
     gulp.src('./')
     .pipe(webserver({
          host:'localhost',
          port:8080,
          livereload:true, //自动刷新
          directoryListing:{
               enable: true,
               path:'./'
          },
     }));
});
使用webpack-dev-server模块
module.exports = {
     ......
     devServer: {
          contentBase: "build/",
          port:8080,
          inline: true //实时刷新
     }
}
版本控制 使用gulp-rev和gulp-rev-collector两个模块 将生成文件加上hash值
module.exports = {
     ......
    output: {
        ......
        filename: "[name].[hash:8].js"
    },
     plugins:[
          ......
          new ExtractTextPlugin(style.[hash].css")
     ]
}
两者区别

虽然都是前端自动化构建工具,但看他们的定位就知道不是对等的。

gulp严格上讲,模块化不是他强调的东西,他旨在规范前端开发流程。

webpack更是明显强调模块化开发,而那些文件压缩合并、预处理等功能,不过是他附带的功能。

总结

gulp应该与grunt比较,而webpack应该与browserify(网上太多资料就这么说,这么说是没有错,不过单单这样一句话并不能让人清晰明了)。

gulp与webpack上是互补的,还是可替换的,取决于你项目的需求。如果只是个vue或react的单页应用,webpack也就够用;如果webpack某些功能使用起来麻烦甚至没有(雪碧图就没有),那就可以结合gulp一起用。

本文为原创文章,转载请保留原出处,方便溯源,如有错误地方,谢谢指正。

本文地址 :http://www.cnblogs.com/lovesong/p/6413546.html      

gulp与webpack的区别相关推荐

  1. Gulp和webpack的区别

    背景:今天了解了大厂前端任职的一些要求:里面写了要熟悉webpack打包工具和Gulp构建工具,作为前端新人,看到这个就想这两种工具有什么区别? 在这里解答一下自已,而且希望可以帮助到有疑问的人. G ...

  2. Gulp和Webpack对比

    在现在的前端开发中,前后端分离.模块化开发.版本控制.文件合并与压缩.mock数据等等一些原本后端的思想开始逐渐渗透到"大前端"的开发中.前端开发过程越来越繁琐,当今越来越多的网站 ...

  3. GULP和Webpack比较

    转载自https://www.cnblogs.com/RuMengkai/p/6667321.html, 作者:茹孟凯, Gulp和Webpack对比 在现在的前端开发中,前后端分离.模块化开发.版本 ...

  4. 前端构建工具大盘点:gulp、webpack、vite、rollup、esbuild、snowpack、babel、parcel、swc、tsc

    文章目录 背景 分类 转译器 打包器 对比 gulp VS webpack Bundle vs Bundleless(代表就是webpack VS vite) 其他比较 个人理解总结 官网 背景 做前 ...

  5. gulp 与 Webpack 的 异曲同工之处

    gulp 我们可以认为是前端开发的生产线,gulp.task()则是每台运作的机器,当启动gulp的时候,电闸就会被合上,所有的机器开始工作,启动本地server ,编译sass,编译commenjs ...

  6. 前端架构gulp与webpack(知识点整理)

    一 概念介绍 gulp 是 task runner,Webpack 是 module bundler.可以这么说, Webpack 和 gulp 本身都有 95% 的功能是不能被对方替代,或者直接说和 ...

  7. vite和webpack的区别

    项目的构建是我们前端逃不开的话题. 自从我们进入了前端框架时代,构建是我们逃不开的问题,因为前端应用越来越复杂. 最近公司在从webpack过渡到vite.以下是我对他们的认识: what: webp ...

  8. Gulp,grunt,seajs/require和browserify/webpack的区别

    Gulp / Grunt 是构建工具,可以配合各种平台上的插件做js压缩,各种css编译,页面自动刷新,检查语法等,替代手工实现自动化开发 seajs/require和browserify/webpa ...

  9. webpack源码阅读——npm脚本运行webpack与命令行输入webpack的区别

    原文地址:webpack源码阅读--npm脚本执行webpack与命令行输入webpack执行的区别 如有错误,欢迎指正! webpack是目前被大家广为使用的模块打包器.从命令行输入webpack或 ...

最新文章

  1. 【Flutter】Flutter 混合开发 ( 安卓端向 Flutter 传递数据 | FlutterFragment 数据传递 | FlutterActivity 数据传递 )
  2. [云炬创业基础笔记] 第四章测试8
  3. centos65安装RabbitMQ3.6.5
  4. java小数点默认定义_java求两个数后小数点默认无限长度
  5. 20 款优秀的数据可视化工具,总有一款你用的到!
  6. 软件构造学习笔记-第五周
  7. MyEclipse的build、clean、publish、clean(redeploy)的区别
  8. 【渝粤教育】国家开放大学2018年春季 8601-22T燃气工程概论 参考试题
  9. 进销存excel_Excel进销存管理套表,自动库存显示应收应付,全函数快捷轻松
  10. 这些孩子对计算机游戏上瘾英语,沉迷网络游戏高中英语作文
  11. Base64 UUE 文件编码解码工具及使用说明
  12. 北京区块链技术应用协会第一届第四次会员大会顺利召开
  13. GDAL——命令使用专题——gdalinfo命令
  14. Redis实现手机验证码功能
  15. 教你如何屏蔽网通的域名纠错系统
  16. visual studio新手使用教程
  17. 【游戏编程扯淡精粹】工作两年总结
  18. html调用一言api,「许巍定制」自建 Typecho/WordPress 一言API本地服务并调用
  19. bat如何创建多级文件夹
  20. 2022年化工自动化控制仪表考试总结及化工自动化控制仪表证考试

热门文章

  1. 学习 sentry 源码整体架构,打造属于自己的前端异常监控SDK
  2. Greenplum 优化CASE - 对齐JOIN字段类型,使用数组代替字符串,降低字符串处理开销,列存降低扫描开销...
  3. 易思汇完成近亿元B轮融资,信中利投资
  4. 第五课 路由之初识路由
  5. 修改oracle 管理员密码 cmd
  6. jdk自带常用命令行工具使用
  7. mysql表空间被占用,同名表无法创建或导入
  8. 基于ip tunnel连接不同三个不同网络的×××
  9. Yahoo网站性能最佳体验的34条黄金守则
  10. python脚本自动化盲注_三、基于报错型注入和sql盲注的自动化实现