我正在创建一个 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 个单独的项目?
最佳答案
1) 如果您希望 Bower 包管理系统可以使用第二个库,则需要将其包装在 Bower 包中。 npm
是完全不同的东西,您不会直接在两者之间共享。
2) 是的,用户需要确保依赖项在每个页面上以正确的顺序加载。 Bower 只是确保您的依赖项已安装且版本正确。
3)一般来说,我会避免这种情况。它们是具有正交关注点的独立项目。这就是我们首先创建像 Bower 这样的包管理器的原因。
奖金:
4) 是的,您可以使用一个存储库来实现这一目标。每个包管理服务都需要自己的配置文件 - 但是将 bower.json
和 package.json
都放在存储库的根目录下并没有什么问题。您只需分别使用 npm
和 bower
分别发布到每个系统。
关于javascript - 创建具有依赖项的 Bower 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27889337/