我试图总结我对最流行的JavaScript包管理器、打包器和任务执行器的了解。如果我错了,请纠正我:
npm和bower是软件包经理。他们只是下载依赖项,不知道如何自己构建项目。他们知道的是在获取所有依赖项后调用webpack/gulp/grunt。bower类似于npm,但构建了一个扁平的依赖树(不像npm递归地执行)。这意味着npm获取每个依赖项的依赖项(可能会多次获取相同的依赖项),而bower希望您手动包含子依赖项。有时bower和npm分别用于前端和后端(因为每个兆字节在前端可能很重要)。gulf和gulf是任务执行器,可以自动完成所有可以自动化的任务(即编译CSS/Sass、优化图像、制作捆绑包和缩小/透明文件)。咕噜vs咕噜(就像maven vs gradle或配置vs代码)。Grunt基于配置单独的独立任务,每个任务打开/处理/关闭文件。Gulp需要更少的代码,并且基于节点流,这允许它构建管道链(不重新打开相同的文件),并使其更快。webpack(webpack-dev-server)-对我来说,它是一个任务运行器,可以热重新加载更改,让你忘记所有JS/CSS观察者。npm/bower+插件可能会取代任务运行器。他们的能力经常交叉,所以如果你需要在npm+插件上使用gulp/grunt,就会有不同的含义。但任务运行器对于复杂的任务来说无疑是更好的(例如,“在每个构建上创建捆绑包,从ES6到ES5转换,在所有浏览器模拟器上运行它,制作屏幕截图并通过ftp部署到dropbox”)。browserify允许为浏览器打包节点模块。browserify vs node的需求实际上是AMD vs CommonJS。
问题:
什么是webpack和webpack开发服务器?官方文档说它是一个模块打包器,但对我来说,它只是一个任务执行器。有什么不同?你会在哪里使用browserify?我们不能对节点/ES6导入执行同样的操作吗?你什么时候会对npm+插件使用gulp/grunt?当您需要使用组合时,请提供示例