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