如何比较
这三种方法都可以用于为UI项目安装JavaScript依赖项。我知道
那么,什么时候用什么?
最能描述npm和bower之间区别的一个描述是:npm管理称为包的JavaScript模块,而bower管理称为组件的前端组件(即css,html和JavaScript)。npm也用于安装bower。这里有一篇关于npm和bower的扩展性文章(不包括volo),它有很多细节。
它在前端开发人员中仍然很受欢迎,尽管它的功能很少。每个前端包都在使用它。还有一项倡议是将鲍尔并入NPM。
Bower针对客户端进行了优化,只支持平面依赖树,即每个库只能使用一次(因为将同一库的不同版本发送给客户端的代价很高),依赖约束必须由用户解决。
您可以期望在bower注册表中找到任何与前端相关的东西(codebower search<some关键字>/code>)--在我看来,这是bower相对于其他包管理器的最大优势。
我多年来仍然没有使用它超过5分钟。我不知道,但从我所见,它确实包括一些构建工具,这对Grunt用户来说是非常熟悉。
是的,npm代表节点包管理器。但现在你可以把它用在任何事情上;人们不再只是 Npm针对服务器端使用进行了优化,使用了嵌套的依赖关系树。每个依赖项都可以有自己的依赖项,而依赖项也可以有自己的依赖项,依此类推。这消除了依赖项版本冲突,因为每个依赖项可以使用它们自己的版本,例如下划线。然而,即将到来的npm版本3将会使依赖关系树扁平化: 使用npm@3,您的node_modules目录将更加扁平。您的所有依赖项和大部分子依赖项(和(子)+依赖项)将在顶层紧挨着。只有在有冲突的情况下,才会在更深层次上安装模块。这将使Windows用户的操作变得容易得多。 我看到使用NPM的一些优点: npm是JavaScript的包管理器。 截至2013年2月,我的看法如下。请不要再把它考虑进去了。 当你使用一个节点项目时,最好坚持使用它,浏览器也很少有可用的项目。。。 鲍尔现在是流行歌手。他们有很多项目在他们的引擎盖下,项目维护人员喜欢保持他们在鲍尔的注册表上的最新。。。 可惜他有时有点笨手笨脚的。 从那以后,我已经5分钟以上没有试过volo了,但从我所看到的情况来看,它看起来比Bower更灵活。 对volo来说,一个负面的观点是,他们的项目非常过时。
他们似乎在为不同的环境/世界解决同样的问题。NPM用于nodejs和volo,bower用于浏览器。
事实是,您也可以使用NPM来管理浏览器的javascript和css。没有什么能阻止你做这件事。从这个意义上说,使用NPM对我来说比为同一目的管理两个不同的工具更自然。
看来鲍尔有更多的套餐可供选择,至少对那些比较流行的套餐是这样。但是很快,jQuery也将直接在NPM中提供,可能所有其他库都将遵循同样的趋势。
在我看来,既然有browserify和webmake这样的工具可以帮助使用浏览器中的节点模块,就不再需要bower或volo了,除非它们为您提供了其他东西(只存在于它们的注册表中的特定模块)。
Volo和Bower都很好,但是从我的观点来看,如果您已经在使用NPM,那么坚持使用它可能会更好。
请注意,即使不使用browserify或WebMake,您也可以使用NPM来管理您的客户端依赖项。在我所从事的大多数项目中,在安装了npm模块之后,我运行一个脚本将它们部署到我的客户端应用程序使用它们的位置。有时我使用grunt将该文件与其他js文件连接起来,有时我直接从web应用程序的模板文件中引用它。无论如何,这是个人偏好。其他人可能会发现Bower或Volo更容易使用,因为它们更自然地适合他们的工作流程。