62

如何在 bower 中注册本地 git 包?

我当前的component.json如下

{
  "name": "myproject",
  "version": "1.0.0",
  "dependencies": {
    "jquery": "1.8.0",
    "twitter/bootstrap": "2.1.1"
  }
}

但是,我还想添加一个我创建的包,C:/mypackage它是一个带有版本标记的 git 存储库。当我这样做bower install --save C:/mypackage时,它会正确地将其添加到项目中,但不会将其添加到我的 component.json 中。

我正在尝试bower register mypackage C:/mypackage,但它一直在给我

bower error Incorrect format

我究竟做错了什么?

4

4 回答 4

71

选项 1:公共凉亭注册

Bower 主要用于以“非主见”的方式共享公共(客户端)代码。那么,主要用例是拥有一个可公开访问的存储库(在 GitHub 上),该register存储库具有名称和 git 存储库 url。我自己就是这样做的:

bower register linksoup git://github.com/automatonic/linksoup

这只是告诉 bower 服务器,当你install linksoup去获取git://github.com/automatonic/linksoup存储库中的代码时,将它放在本地项目的component目录中。

如果这是您想要做的,那么只需在 github/etc. 上设置一个存储库,将您的代码推送到那里,然后register使用生成的存储库信息。

选项 2:私有依赖

有很多理由不将您的代码发布到可公开访问的存储库中。它可能不是开源的,等等。如果您的mypackage代码不打算公开,那么您可能不应该register在公共凉亭服务器上使用它...此外,即使您可以register使用本地目录,它也只能在你的机器......这违背了通过凉亭共享代码的目的。

如果您只想让 bower 管理本地的私有依赖项,那么我将重复blockhead 的解决方案:

{
  "name": "myproject",
  "version": "1.0.0",
  "dependencies": {
    "jquery": "1.8.0",
    "twitter/bootstrap": "2.1.1",
    "mypackage": "file:///path/to/mypackage/.git"
  }
}

这只是说myproject需要mypackage,并使用 git clone 来检索它。我的猜测是这可以使用 git 可以理解的任何东西(包括本地存储库)。但是您应该注意,这可能会给其他任何处理此代码而无法访问您的本地路径的人带来问题。

最佳的揣测

在我看来,您可能已经假设这bower register是一个本地操作(告诉 bower 如何通过某种本地注册表查找依赖项)。据我所知,这只是远程和公共注册,这就是不支持的原因。

您可能还在寻找一种方法来使用 npm 进行链接操作。也就是说,在依赖模块上工作,而不总是让您的开发周期包含发布。

关于涉及多少人以及您试图完成的工作的一些细节将有助于更有针对性的答案。

于 2013-01-28T21:40:00.293 回答
53

您可以按如下方式添加任何 git 存储库:

{
  "name": "myproject",
  "version": "1.0.0",
  "dependencies": {
    "jquery": "1.8.0",
    "twitter/bootstrap": "2.1.1",
    "myrepo":"git://myrepo.com/myrepo"
  }
}
于 2012-12-10T18:37:43.160 回答
33

您可以使用bower link

链接功能允许开发人员轻松测试他们的包。链接是一个两步过程。

在项目文件夹中使用bower link将创建一个全局链接。然后,在其他一些包中,bower link <pkg>将在 components 文件夹中创建一个指向先前创建的链接的链接。

这允许轻松测试包,因为更改将立即反映。请注意,bower 不会获取链接的包依赖项。

Bower 将在安装/更新时覆盖链接。

于 2013-12-07T18:29:34.290 回答
24

最大的想法bower是轻松共享项目的依赖项。所以使用本地 repo 应该仅限于 testing

一旦你理解了这一点,你就应该知道,register为了将它用作依赖项,你的包并不是严格必要的。

这是因为 bower 依赖可以指定版本文件夹。所以你可以使用本地存储库

定义为 bower 包

首先,您需要将依赖项定义为 bower 包

# create the bower package
cd /path/to/you-need-me
bower init
# answer questions…

添加为项目依赖项

然后在您的主项目中,需要you-need-me依赖项,编辑bower.json文件以添加(或扩展):

  "dependencies": {
    …
    "you-need-me":  "file:///path/to/you-need-me/.git/"
    "you-need-me-windows":  "C:/path/to/you-need-me-windows/.git/"
  }

因此,您不提供版本,而是提供本地git端点,即subdirectory.git/

安装依赖

在 man 项目中安装 bower 依赖项:

cd /path/to/main-project/
bower install

失败

bower you-need-me#*              ENOTFOUND Package /path/to/you-need-me/ not found

再次检查您的路径并确保您指向.git/依赖项的目录。

成功

你应该得到类似的东西:

bower you-need-me#*             not-cached file:///path/to/you-need-me/.git/#*
bower you-need-me#*                resolve file:///path/to/you-need-me/.git/#*
bower you-need-me#*               checkout master
bower you-need-me#*               resolved file:///path/to/you-need-me/.git/#b18c753c6f
bower you-need-me#*                install you-need-me#b18c753c6f

写一篇博客文章:在注册包之前在本地测试 bower.json

于 2013-11-11T20:02:25.133 回答