gulp强调的是前端开发的工作流程,我们可以通过配置一系列的task,定义task处理的事务(例如文件压缩合并、雪碧图、启动server、版本控制等),然后定义执行顺序,来让gulp执行这些task,从而构建项目的整个前端开发流程。
PS:简单说就一个Task Runner
webpack是一个前端模块化方案,更侧重模块打包,我们可以把开发中的所有资源(图片、js文件、css文件等)都看成模块,通过loader(加载器)和plugins(插件)对资源进行处理,打包成符合生产环境部署的前端资源。
PS:webpack is a module bundle
gulp与webpack可以实现一些相同功能,如下(列举部分):
功能 | gulp | webpack |
---|---|---|
文件合并与压缩(css) | 使用gulp-minify-css模块 | 样式合并一般用到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模块 | 使用webpack-dev-server模块 |
版本控制 | 使用gulp-rev和gulp-rev-collector两个模块 | 将生成文件加上hash值 module.exports = {plugins:[new ExtractTextPlugin(style.[hash].css")} |