2014-03-30 224 views
4

网络充满了如何通过凉亭消费包的例子,但它缺少一个简单的演练如何注册/部署/发布(无论你喜欢的任何术语)包。发布凉亭包(带凉亭?)

假设我正在开发我自己的js包,我该如何将它部署到专用存储库/文件夹? 我应该为此目的使用凉亭吗?或者我应该使用grunt任务?

让我更准确地知道我需要什么: 我想创建一个js项目,它会使用其他的bower包。 我想将几十个js文件连接成一个或几个js文件(每个js文件都是一个凉亭软件包),将它们细化,缩小它们,测试它们并粉碎它们的骨骼,而不是简单地部署每个最终的js文件存入一个存储库(在我的情况下 - SVN,因为这是我们公司使用的)。

就像我挖掘网络一样,在我看来,这不是一个凉亭的任务,这是一个咕噜/蚂蚁的任务。 我对不对?

回答

2

我在过去的几个星期里取得了很多进展,我很乐意将我的发现分享给像我这样的咕噜+凉亭新手。

看来,鲍尔默认注册到http://bower.herokuapp.com注册表,它只支持git协议(因为它意味着服务器公共库)。

因此,如果您想在私人存储库中发布自己的js库,使用默认注册表不是一种好的做法。那里有许多凉亭注册表实现。就我个人而言,我是一个java家伙,所以在我的操场上我使用https://github.com/Softpagehomeware/bower-java-registry,但也有npm,python和其他注册表实现。

当你想消耗你的包在另一个项目中,只定义到哪里寻找它在你.bowerrc文件:

{ 
    "registry": { 
     "register": "http://myhost/bower-java-server", 
     "publish": "http://myhost/bower-java-server", 

     "search": [ 
      "http://myhost/bower-java-server" 
      , "https://bower.herokuapp.com" 
     ] 
    }, 

    "directory": "bower_components" 
} 

这样,当你有一个凉亭的依赖,它首先在您的私人注册表,如果它没有找到它,它会搜索herokuapp注册表。

至于在我的私人git存储库托管分发包,我已经使用grunt-build-control,它可以把你dist文件夹,并推送到您的可分发的存储库(这是注册在您的凉亭注册表)。

4

有点晚了,但我目前正试图找出许多相同的事情。这是我迄今为止所了解的。

  • 你会用grunt构建你的库,把它们放到一个分发文件夹中。这将处理所有的linting /缩小/连接等。
  • 准备好黄金时间后,在svn中为它创建一个标签。 (见下面...这有点奇怪)。
  • 你做不是需要注册任何东西。只需使用安装和存储库的路径即可。

    凉亭安装SVN + https://svn.mycompany.com/myproject

  • 使用--save或--save-dev的相关选项,将其保存在您的bower.json文件。

  • 你可以打SVN几个方面:

    • 公共远程端点颠覆,例如,SVN + http://package.googlecode.com/svn/
    • 私有Subversion存储库,例如svn + ssh://package.googlecode.com/svn/。
    • 本地端点,即Subversion存储库的文件夹,例如svn + file:/// path/to/svn /。

这是从Bower Home Page

当然,这并不是那么容易。我发现了更多:

什么是你放入的SVN仓库的路径必须有三个文件夹下:trunk,branches和tags。所以,指向一些子文件夹是完全正确的,但在这之下,你必须有这三个文件夹。即假设你的主文件夹下有一个分发文件夹(即/ trunk/dist)。你有咕噜把最终产品放入这个文件夹。然后你对它进行标记(将标签复制到标签)。所以,你的目录结构看起来是这样的:

myproject\tags\REL-1.0\dist\my-library.js 

通过这种结构,凉亭是呕吐物,如果你试图做类似

bower install https://svn.mycompany.com/myproject/tags/REL-1.0/dist 

现在,如果你让下DIST它将这三个文件夹工作。即如果文件夹结构看起来像:

myproject\tabs\REL-1.0\dist\tags\my-library.js 

上述鲍尔命令将工作(但这真的很丑)。

因此,您可能需要为您的软件包提供单独的存储库。哦,无论路径中的最后一个文件夹是什么,在bower安装之后,这将是vendor文件夹中的文件夹。即在上面的示例中,库将位于vendors \ dist文件夹中....并不理想。所以,我正在看这样的事情:

mypackages/MyLibrary/tags/REL-1.0 

因此,存储库是mypackages,每个库都有一个文件夹。在那之下是三个必需的文件夹(中继线等)。然后我有每个版本的标签下的文件夹。

你可以注意到这样的文件夹:

bower install svn+https://svn.mycompany.com/mypackages/MyLibrary#REL-1.0 

你也可以使用#trunk得到树干。有点奇怪。如果您没有提供任何版本(文件夹),它会从标签中获取最新文件夹(不确定是通过排序顺序还是在提交日期完成的)。如果标签中没有文件夹,它将变为中继。不知道如何去分支机构。另外,如果你的存储库有安全性,如果你保存了认证信息,它就会正常工作。如果您没有保存认证信息,不知道该如何工作。

我希望这有助于!我仍然在想象自己......

+0

哇,非常感谢! 我会试一试。关于SVN回购结构的提示非常重要。 所以基本上你说运行“凉亭安装”会注册我的项目分发?我认为bower install仅用于获取工作区中的bower组件的依赖关系。 –