为什么Yeoman使用Bower而不是npm?

我开始使用这些工具,并且仍然在理解它们的元依赖关系。

正如我看到的Yeoman,它是一个npm客户端与一些“向导”function。 它已经安装了所使用的发生器的依赖关系。 为什么,在哪里以及如何在这里需要鲍尔? 为什么Yeoman在已经使用npm的时候需要另一个软件包系统?

我知道通常npm用于服务器端代码和Bower用于客户端代码(但仍然在服务器上,browserify用于客户端)。

npm和Bower都是包pipe理系统 。 对? 那么为什么Yeoman使用两个不同的包pipe理系统而不是坚持一个呢?


示例:我想为我的团队创build一组模板和组件,以便能够按照常见的结构,样式等快速构build网站。

  • 首先,我用基本的CSS,菜单创build一个空的网站。 我做一个Yeoman生成器。
  • 然后,我做了第二个发电机添加一个空的网页到这个网站。 (我想为这种情况下的生成器,所以它创build菜单中的条目,添加一些testing等)。
  • 然后,我想提供一些自定义组件,就像一个特殊的forms。 我通常会将其包装在凉亭包装中。 但为什么不作为另一个发电机?

在这种情况下,发电机将完全符合该法案。 这将是一个非常愚蠢的发电机,基本上只是在正确的文件夹中导入文件。 这不会改变开发者的stream程。

这只是一个自以为是的决定,引用了文曼的话 :

通过我们的官方发电机,我们推广“Yeoman工作stream程” 。 这个工作stream程是一个强大的和自以为是的客户端堆栈,包括工具和框架 ,可以帮助开发人员快速构build漂亮的Web应用程序。

Bower仅为前端组件pipe理而devise:

它为前端程序包pipe理问题提供了一个通用的,未经select的解决scheme,同时通过一个可以被更多自以为是的构build栈使用的API公开包程序依赖模型。 没有系统范围的依赖关系,在不同的应用程序之间不存在依赖关系,依赖关系树是平坦的

编辑:引用@ jlafay的评论:

…它的依赖性结构保持更平坦,由于URL的最大长度,它更适合于网页。 npm的依赖关系可以有子依赖关系,他们倾向于将这些子依赖关系嵌套在它们各自的父目录中。

Yeoman使用Bower,因为它是一个networking包pipe理器 ,允许您轻松pipe理项目的依赖关系。

Yeoman需要Bower来处理不包含在npm中的JavaScript,图片或CSS等依赖项(为节点,服务器端应用程序安装包)