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

use*_*986 61 javascript git package bower bower-register

如何在凉亭中注册本地git包?

我当前的component.json如下

{
  "name": "myproject",
  "version": "1.0.0",
  "dependencies": {
    "jquery": "1.8.0",
    "twitter/bootstrap": "2.1.1"
  }
}
Run Code Online (Sandbox Code Playgroud)

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

我正在努力,bower register mypackage C:/mypackage但它一直在给我

bower error Incorrect format
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

el2*_*ot2 71

选项1:公共凉亭注册

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

bower register linksoup git://github.com/automatonic/linksoup
Run Code Online (Sandbox Code Playgroud)

这只是告诉购物者服务器,当你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"
  }
}
Run Code Online (Sandbox Code Playgroud)

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

最佳的揣测

它看起来好像你可能认为这bower register是一个本地操作(告诉bower如何通过某种本地注册表找到依赖).据我所知,这只是一个远程和公共注册,这就是为什么这不受支持.

您可能也在寻找一种方法来执行与npm链接操作之类的操作.也就是说,在不依赖开发周期的情况下处理依赖模块包括发布.

关于涉及多少人以及您想要实现的目标的一些细节将有助于更有针对性的答案.

  • 我也必须使用私有git存储库,但我想从共享的网络文件夹位置执行此操作.经过一些游戏,我使用这种格式工作:`"file:////networkdomain.com/path/to/mypackage/.git"`(强调`file:`而不是3之后的4个斜杠) (2认同)

blo*_*ead 53

您可以添加任何git存储库,如下所示:

{
  "name": "myproject",
  "version": "1.0.0",
  "dependencies": {
    "jquery": "1.8.0",
    "twitter/bootstrap": "2.1.1",
    "myrepo":"git://myrepo.com/myrepo"
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 请记住指定分支:"myrepo":"git://myrepo.com/myrepo#branch" (23认同)
  • 关键是,你可以做任何git存储库.如果它的远程或本地无关紧要.我只是表明它可能. (3认同)
  • @FrederikWordenskjold - 它将默认为主分支,但是一个非常棒的评论!我赞成你,只是想我会添加这个小细节. (2认同)

Ali*_*iba 33

你可以使用bower link:

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

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

这样可以轻松测试包,因为更改会立即反映出来.请注意,bower不会获取链接的包依赖项.

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


Édo*_*pez 23

最重要的想法bower是轻松分享项目的依赖关系.所以使用本地回购应限于测试.

一旦你理解了这一点,你就应该知道register你的软件包不是非常必要的,以便将它用作依赖项.

这是因为凉亭依赖性可以指定版本,文件夹.所以你可以使用本地存储库.

定义为凉亭包

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

# create the bower package
cd /path/to/you-need-me
bower init
# answer questions…
Run Code Online (Sandbox Code Playgroud)

添加为项目依赖项

然后在你的主项目中,需要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/"
  }
Run Code Online (Sandbox Code Playgroud)

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

安装依赖

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

cd /path/to/main-project/
bower install
Run Code Online (Sandbox Code Playgroud)

失败

bower you-need-me#*              ENOTFOUND Package /path/to/you-need-me/ not found
Run Code Online (Sandbox Code Playgroud)

再次检查您的路径,并指向.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
Run Code Online (Sandbox Code Playgroud)

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