【问题标题】:Creating bower projects that have dependencies创建具有依赖项的 bower 项目
【发布时间】:2015-01-11 16:25:36
【问题描述】:

我正在创建一个 javascript 客户端库,我将通过 Bower 提供它并依赖于另外两个库,一个可通过 Bower (https://github.com/abritinthebay/datejs) 获得,另一个仅可通过 npm (https://github.com/fent/randexp.js) 获得。我担心我图书馆的用户会如何使用它。我的疑虑和恐惧是:

  • 当第二个库只能通过 npm 使用时,如何将第二个库声明为我的库的依赖项?

  • 在用户安装我的库后,他/她是否必须了解依赖关系并在其 index.html 中手动包含相应的 javascript 文件?我知道 grunt-bower-install 解决了这个问题,但我担心那些根本不使用 grunt 的人。

  • 如果我放弃所有这些并在我自己的代码中包含上述库的代码,会不会很糟糕?

  • (奖金回合):我希望我的库可以作为 AngularJS 服务、node.js 模块和“普通”javascript 函数使用。有没有办法让我只使用一个存储库来实现这一点,还是我必须创建 3 个单独的项目?

【问题讨论】:

  • bower 可以通过 git 解决依赖关系,你应该研究一下。换句话说,你可以声明一个 github 项目,如果它不是一个 bower 项目作为依赖项

标签: javascript angularjs node.js gruntjs bower


【解决方案1】:

1) 如果您希望 bower 包管理系统可以使用第二个库,则需要将第二个库包装在 bower 包中。 npm 是完全不同的东西,你不会直接在两者之间分享。

2) 是的,用户需要确保在每个页面上以正确的顺序加载依赖项。 Bower 只是确保您的依赖项已安装且版本正确。

3) 通常,我会避免这种情况。它们是具有正交关注点的独立项目。这就是为什么我们一开始就创建了像 bower 这样的包管理器。

奖金:

4) 是的,您可以使用一个存储库来实现这一目标。每个包管理服务都需要它们自己的配置文件——但是将bower.jsonpackage.json 都放在存储库的根目录中并没有错。您只需分别使用npmbower 分别发布到每个系统。

PS。这应该不止 1 个问题。

【讨论】:

  • 我通过在我的 bower.json 中添加缩小的 js 文件的 url 作为 bower 依赖项解决了 randexp.js 依赖项问题。我将为 Angular 模块提供一个 bower.json,为节点模块提供一个 package.json,以及一个用于在浏览器中使用的独立 js 文件。
猜你喜欢
  • 2020-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-06
  • 2022-10-30
  • 2012-11-27
  • 2013-08-18
  • 1970-01-01
相关资源
最近更新 更多