如何在bower中注册本地git包?
我当前的组件.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
我做错了什么?
选项1:Public Bower注册
Bower的构建主要是为了以"非固执己见"的方式共享公共(客户端)代码。那么,主要的用例是拥有一个可公开访问的存储库(在GitHub上),它是register
d,具有名称和git存储库url。我只是自己做的:
bower register linksoup git://github.com/automatonic/linksoup
这只是告诉bower服务器,当您install linksoup
去git://github.com/automatonic/linksoup
存储库获取代码,并将其放在本地项目的component
目录中时。
如果这是你想要做的,那么只需在github/等上建立一个存储库。,将您的代码推送到那里,然后使用生成的存储库信息register
。
备选方案2:私人依赖
有很多理由不将代码发布在可公开访问的存储库中。它可能不是开源的,等等。如果你的mypackage
代码不是公共的,那么你可能不应该在公共bower服务器上使用register
。。。此外,即使您可以register
本地目录,它也只能在您的机器上工作。。。这违背了通过bower共享代码的目的。
如果你只想让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克隆来检索它。我的猜测是,这可以使用git能够理解的任何东西(包括本地存储库)。但您应该注意,对于其他无法访问您的本地路径的代码用户来说,这可能会遇到问题。
最佳猜测
在我看来,您可能已经假设bower register
是一个本地操作(告诉bower如何通过某种本地注册表找到依赖项)。据我所知,这只是一个远程和公开的注册,这就是为什么这是不受支持的。
你可能也在寻找一种方法来做一些事情,比如用npm进行链接操作。也就是说,在不总是让开发周期包括发布的情况下,处理依赖模块。
一点关于有多少人参与以及你试图完成什么的细节将有助于得到更有针对性的答案。
您可以按如下方式添加任何git存储库:
{
"name": "myproject",
"version": "1.0.0",
"dependencies": {
"jquery": "1.8.0",
"twitter/bootstrap": "2.1.1",
"myrepo":"git://myrepo.com/myrepo"
}
}
您可以使用bower link
:
链接功能允许开发人员轻松测试他们的包。链接是一个分两步的过程。
在项目文件夹中使用
bower link
将创建一个全局链接。然后,在其他包中,bower link <pkg>
将在components文件夹中创建一个链接指向先前创建的链接。这允许轻松地测试包,因为更改将立即反映出来。请注意,bower不会获取链接的包依赖项。
Bower将在安装/更新时覆盖链接。
bower
的大创意是轻松共享项目的依赖关系。因此,使用本地回购应仅限于测试。
一旦您了解了这一点,您就应该知道,严格来说,register
并不是将包用作依赖项所必需的。
这是因为bower depencency可以指定版本、文件夹或包。因此您可以使用本地存储库。
定义为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
端点,即子目录.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。