JavaScript dependency management: npm vs. bower vs. volo [已关闭]凉亭沃洛npmnpm凉亭沃洛

2022-08-30 02:20:15

您如何比较 和 ?npmbowervolo

这三者都可用于为 UI 项目安装 JavaScript 依赖项。我理解的是更多的节点特定。npm

那么,什么时候用什么呢?

npm仍然站得很远,但似乎正在解决完全相同的问题,尽管我无法在 和 之间划清界限。bowervolonpmbower-volo


答案 1

最能描述npm和bower之间区别的描述是:npm管理称为包的JavaScript模块,Bower管理称为组件的前端组件(即.css,html和JavaScript)。npm也用于安装bower。这是一篇关于npm和bower(不包括volo)的广泛文章,它详细介绍了很多细节。


答案 2

凉亭

它仍然在前端开发人员中非常受欢迎,尽管它的功能很少。每个前端包都在使用它。还有一项将bower合并到npm中的倡议

Bower针对客户端进行了优化,仅支持平面依赖关系树,即每个库必须仅使用一次(因为将同一库的不同版本交付给客户端的成本很高),并且依赖关系约束必须由用户解决。

你可以期望在 bower 注册表中找到任何与前端相关的内容 () - 在我看来,这是 bower 相对于其他包管理器的最大优势。bower search <some keyword>

沃洛

多年来,我仍然没有使用它超过5分钟。不知道它,但从我所看到的,它确实包括一些构建工具,这对Grunt用户来说非常熟悉。

npm

是的,npm 代表 Node Package Manager。但是现在你可以用它来做任何事情;人们不再只是做事,并期望它们只在Node环境中工作。例如,Twitter Bootstrap有许多npm包npm install

Npm 针对服务器端使用情况进行了优化,具有嵌套的依赖关系树。每个依赖项都可以有自己的依赖项,这些依赖项可以有自己的依赖项,依此类推。这消除了依赖版本冲突,因为每个依赖关系都可以使用自己的版本,例如下划线。但是,即将推出的 npm 版本 3 将展平依赖关系树

使用npm@3,您的node_modules目录将更加平坦。您的所有依赖项和大多数子依赖项(和(子)+依赖项)都将在顶层彼此相邻。只有当存在冲突时,模块才会安装在更深层次。这应该会让Windows用户更容易。

我看到使用npm的一些优点:

  • 它被所有其他包管理器(组件,bower,volo,JSPM等)使用;
  • 允许使用构建脚本;
  • 许多工具可用于内省基于 npm 的包

npm 是 JavaScript 的包管理器。

npmjs.com screenshot


截至2013年2月,我的意见如下。请不要再把它考虑在内了。

npm

当你使用Node项目时,最好坚持下去,很少有项目可供浏览器使用......

凉亭

鲍尔现在是流行歌手。他们有很多项目,项目维护人员喜欢在bower注册表中保持它们的最新状态......

很遗憾,他有时有点小问题。

沃洛

从那以后,我没有尝试volo超过5分钟,但从我所看到的,它看起来比bower更灵活。

volo的一个缺点是他们的项目非常过时。