JavaScript dependency management: npm vs. bower vs. volo [已关闭]凉亭沃洛npmnpm凉亭沃洛
您如何比较 和 ?npm
bower
volo
这三者都可用于为 UI 项目安装 JavaScript 依赖项。我理解的是更多的节点特定。npm
那么,什么时候用什么呢?
npm
仍然站得很远,但似乎正在解决完全相同的问题,尽管我无法在 和 之间划清界限。bower
volo
npm
bower-volo
您如何比较 和 ?npm
bower
volo
这三者都可用于为 UI 项目安装 JavaScript 依赖项。我理解的是更多的节点特定。npm
那么,什么时候用什么呢?
npm
仍然站得很远,但似乎正在解决完全相同的问题,尽管我无法在 和 之间划清界限。bower
volo
npm
bower-volo
最能描述npm和bower之间区别的描述是:npm管理称为包的JavaScript模块,Bower管理称为组件的前端组件(即.css,html和JavaScript)。npm也用于安装bower。这是一篇关于npm和bower(不包括volo)的广泛文章,它详细介绍了很多细节。
它仍然在前端开发人员中非常受欢迎,尽管它的功能很少。每个前端包都在使用它。还有一项将bower合并到npm中的倡议。
Bower针对客户端进行了优化,仅支持平面依赖关系树,即每个库必须仅使用一次(因为将同一库的不同版本交付给客户端的成本很高),并且依赖关系约束必须由用户解决。
你可以期望在 bower 注册表中找到任何与前端相关的内容 () - 在我看来,这是 bower 相对于其他包管理器的最大优势。bower search <some keyword>
多年来,我仍然没有使用它超过5分钟。不知道它,但从我所看到的,它确实包括一些构建工具,这对Grunt用户来说非常熟悉。
是的,npm 代表 Node Package Manager。但是现在你可以用它来做任何事情;人们不再只是做事,并期望它们只在Node环境中工作。例如,Twitter Bootstrap有许多npm包。npm install
Npm 针对服务器端使用情况进行了优化,具有嵌套的依赖关系树。每个依赖项都可以有自己的依赖项,这些依赖项可以有自己的依赖项,依此类推。这消除了依赖版本冲突,因为每个依赖关系都可以使用自己的版本,例如下划线。但是,即将推出的 npm 版本 3 将展平依赖关系树:
使用npm@3,您的node_modules目录将更加平坦。您的所有依赖项和大多数子依赖项(和(子)+依赖项)都将在顶层彼此相邻。只有当存在冲突时,模块才会安装在更深层次。这应该会让Windows用户更容易。
我看到使用npm的一些优点:
npm 是 JavaScript 的包管理器。
截至2013年2月,我的意见如下。请不要再把它考虑在内了。
当你使用Node项目时,最好坚持下去,很少有项目可供浏览器使用......
鲍尔现在是流行歌手。他们有很多项目,项目维护人员喜欢在bower注册表中保持它们的最新状态......
很遗憾,他有时有点小问题。
从那以后,我没有尝试volo超过5分钟,但从我所看到的,它看起来比bower更灵活。
volo的一个缺点是他们的项目非常过时。