【问题标题】:Why does Yeoman uses Bower instead of only npm? [closed]为什么 Yeoman 使用 Bower 而不是只使用 npm? [关闭]
【发布时间】:2014-09-02 02:08:33
【问题描述】:

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

在我看来,Yeoman 是一个 npm 客户端,具有一些“向导”功能。它已经安装了所用生成器的依赖项。为什么,在哪里以及如何在这里使用和需要 Bower?为什么 Yeoman 已经在使用 npm 时还需要另一个包系统?

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

npm 和 Bower 都是 包管理系统。正确的? 那么为什么 Yeoman 使用两种不同的包管理系统而不是坚持使用一种呢?


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

  • 首先,我用基本的 CSS、菜单创建了一个小空网站。我用它制作了一个 Yeoman 生成器。
  • 然后我制作了第二个生成器来向该网站添加一个空白页面。 (我想要一个用于这种情况的生成器,以便它在菜单中创建条目,添加一些测试等)。
  • 然后我想提供一些自定义组件,比如特殊表格。我通常会将其包装在凉亭包装中。 但为什么不作为另一个生成器呢?

在这种情况下,发电机完全符合要求。这将是一个非常愚蠢的生成器,基本上只是将文件导入正确的文件夹中。它不会改变开发人员的流程。

【问题讨论】:

  • 这是它们的常用用法。 Bower 实际上也是服务器端的,但通常用于前端包。 Browserify 是客户端。但是 npm 可以很好地用于服务器端的前端组件。这些都是包管理系统。

标签: node.js npm yeoman bower


【解决方案1】:

这只是一个自以为是的决定,引用Yeoman's

通过我们的官方生成器,我们推广“Yeoman 工作流程”。此工作流程是一个强大且自以为是的客户端堆栈,包含工具和框架,可以帮助开发人员快速构建漂亮的 Web 应用程序。

Bower 专为 front end components management 设计:

它为前端包管理问题提供了一个通用的、无主见的解决方案,同时通过一个 API 公开包依赖模型,该 API 可以被更固执的构建堆栈使用。没有系统范围的依赖,不同应用之间没有共享依赖,依赖树是扁平的

编辑: 引用@jlafay 的评论:

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

【讨论】:

  • 这不是一个令人惊讶的决定吗?在框架内复制工具?但无论如何,谢谢,这似乎是答案。
  • 是也不是... npm 很棒,但是只为客户端依赖项使用 bower 比使用具有两种配置的 npm 要干净一些,因为我当然不喜欢使用 jquery-ui 或angularjs 安装在 node_modules 文件夹中。此外,对于新手来说,找到两种不同的工具会更友好、更容易理解(但这是我的看法)。
【解决方案2】:

Yeoman 使用 Bower,因为它是一个用于 Web 的 包管理器,可让您轻松管理项目的依赖项。

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

【讨论】:

  • 据我所知,一个 npm 包可以包含任何东西,包括图片和 css。 npmjs.org/doc/misc/npm-faq.html#what-is-a-package- 。例如,Yeoman 的生成器是 npm 包。前端代码使用 npm 有什么问题?
  • @gpe 与 npm 相比,您更有可能在 bower 中找到前端 Web 包和资源。当然 npm 可以安装它想要的任何东西,但 bower 对于 js 库/文件和 css 更常见。我认为它的依赖结构仍然更加平坦,由于 url 的最大长度更适合网页。 npm 依赖项可以有子依赖项,它们倾向于将这些子依赖项嵌套在各自父目录中。
  • @jlafay 嗯,没错!我忘记了这一点。这是 bower 和 npm 之间非常重要的区别。
  • 这将是对@rignacio 答案的一个很好的补充评论。
  • @jlafay,我已将您的评论添加为引用。
猜你喜欢
  • 2016-08-15
  • 1970-01-01
  • 1970-01-01
  • 2015-06-03
  • 2015-04-26
  • 2011-07-08
  • 1970-01-01
  • 2015-12-04
相关资源
最近更新 更多