发布凉亭包(用凉亭?)

时间:2014-03-30 08:05:14

标签: svn repository gruntjs bower

Web上有很多关于如何使用bower来使用软件包的例子,但它缺少一个关于如何注册/部署/发布(无论你喜欢哪个术语)软件包的简单演练。

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

让我更准确地说明我需要的东西: 我想创建一个消耗其他凉亭包的js项目。 我想将几十个js文件连接成一个或几个js文件(每个文件都意味着一个bower包),lint它们,缩小它们,测试它们并粉碎它们的骨头,而不是简单地部署每个最终的js文件进入存储库(在我的情况下 - SVN,因为我们在公司使用的是什么)。

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

2 个答案:

答案 0 :(得分:4)

有点晚了,但我目前正试图想出很多相同的事情。这是我到目前为止所发现的。

  • 您将使用grunt构建库,将它们放入分发文件夹中。这将处理所有linting / minifying / concatenating等。
  • 当它准备好黄金时间时,在svn中为它创建一个标签。 (见下文......这有点奇怪)。
  • 需要注册任何东西。只需将安装与存储库的路径一起使用即可。

    bower install svn + https://svn.mycompany.com/myproject

  • 使用--save或--save-dev选项将其保存在bower.json文件中。

  • 您可以通过以下几种方式点击SVN:

    • 公共远程Subversion端点,例如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就是呕吐
bower install https://svn.mycompany.com/myproject/tags/REL-1.0/dist

现在,如果您在dist下创建这三个文件夹,它将起作用。即如果文件夹结构如下:

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

上面的bower命令会起作用(但这真的很难看)。

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

mypackages/MyLibrary/tags/REL-1.0

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

您可以注意这样的文件夹:

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

你可以使用#trunk来获取主干。有点奇怪。如果您不提供任何版本(文件夹),它将从标签获取最新文件夹(不确定是通过排序顺序还是在提交日期完成)。如果标签中没有文件夹,则会获得中继。不知道怎么去分支机构。

此外,如果您的存储库具有安全性,如果您已保存身份验证信息,它将正常工作。如果您没有保存身份验证信息,不知道如何工作。

我希望这有帮助!我还在自己搞清楚......

答案 1 :(得分:2)

我在过去几周取得了很大的进步,我很高兴将我的发现分享给像我这样的任何笨蛋+凉亭新秀。

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

因此,如果您想在私有存储库中发布自己的js库,那么使用默认注册表并不是一个好习惯。那里有很多bower注册表实现。就个人而言,我是一个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"
}

这样,当你有一个bower依赖项时,它首先在你的私人注册表中查找,如果它没有找到它,它会搜索herokuapp注册表。

至于在我的私人git存储库中托管分发包,我使用了grunt-build-control,它可以将你带到dist文件夹并将其推送到你的可分发存储库(在你的bower注册表中注册)。