我正在尝试总结我对最流行的JavaScript包管理器,捆绑包和任务运行器的了解.如果我错了,请纠正我:
npm&bower是包管理员.他们只是下载依赖项,不知道如何自己构建项目.他们知道的是在获取所有依赖项之后调用webpack/ gulp/ grunt.bower就像npm,但是构建了扁平的依赖树(不像npm递归那样).含义npm获取每个依赖项的依赖项(可能会获取相同的几次),同时bower期望您手动包含子依赖项.有时bower并npm分别用于前端和后端(因为每兆字节在前端可能很重要).grunt并且gulp是任务运行者自动化所有可以自动化的东西(即编译CSS/Sass,优化图像,制作捆绑并缩小/转换它).gruntvs. gulp(就像mavenvs. gradle或配置与代码).Grunt基于配置单独的独立任务,每个任务打开/处理/关闭文件.Gulp需要的代码量较少,并且基于节点流,这使得它可以构建管道链(无需重新打开同一个文件)并使其更快.webpack(webpack-dev-server) - 对我来说,这是一个热门重新加载更改的任务运行器,可以让你忘记所有JS/CSS观察者.npm/ bower+ plugins可以替换任务运行器.他们的能力经常交叉,所以如果你需要使用gulp/ gruntover npm+插件,会有不同的含义.但是,跑步者的任务是复杂的任务肯定更好(例如,"每个建设创建捆绑,从ES6 transpile到ES5,在所有浏览器模拟器中运行它,使屏幕截图和部署通过FTP收存箱").browserify允许为浏览器打包节点模块.browserifyvs node的require实际上是AMD vs CommonJS.问题:
webpack&webpack-dev-server?官方文档说它是一个模块捆绑器,但对我来说它只是一个任务运行器.有什么不同?browserify?我们不能对node/ES6导入做同样的事情吗? gulp …bower和之间的根本区别是npm什么?只想要简单明了的东西.我见过我的一些同事在他们的项目中使用bower和npm互换.
我正在开始一个新项目,我正在尝试前进思考它.我过去曾使用过Browserify.对于我的新项目,我想使用Webpack,Rollup或SystemJS.到目前为止,Webpack看起来是最成熟的,拥有大量令人敬畏的功能.
不过,我担心Webpack在采用HTTP/2的一两年内会变得无关紧要.所以我想知道,Webpack为通过HTTP/2提供服务的网站提供了什么价值?我不是在寻找一个意见,而是一个关于使用Webpack和HTTP/2的好处的事实解释.如果没有任何好处或很少的好处,这也将有助于我做出决定.
随着npm 3带有扁平(-ish)依赖结构,我们是否会在未来使用Bower,或者在发布时仅使用npm 3?
npm最常用于管理Node.js模块,但当与Browserify和/或$ npm重复数据删除相结合时,它也适用于前端.
Bower专为前端而设计,并以此为基础进行了优化.最大的区别是npm执行嵌套依赖树(大小很重),而Bower需要一个平面依赖树(将依赖解析的负担放在用户身上)