使用Bower发布一个Bower包?

4

网络上有很多关于如何通过bower使用包的例子,但缺少一个简单的步骤说明如何注册/部署/发布(你喜欢的任何术语)包。

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

让我更精确地介绍我的需求: 我想创建一个js项目,其中包含其他bower包。 我想将几十个js文件合并成一个或几个js文件(每个文件都是一个bower包),对它们进行lint、压缩、测试和优化,然后简单地将每个最终的js文件部署到存储库(在我的情况下是SVN,因为我们公司使用它)。

就我所了解的而言,似乎这不是bower的任务,而应该是grunt/ant的任务。 我说得对吗?

2个回答

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首页

当然,事情并不完全如此简单。我还发现了一些更多的信息:

你放入SVN存储库路径下的任何东西必须有三个文件夹:trunk、branches和tags。因此,指向某个子文件夹是完全可以的,但在该文件夹下,你必须有这三个文件夹。例如,假设你的主文件夹下有一个分发文件夹(即/trunk/dist)。你让grunt将最终产品放入这个文件夹中。然后你标记它(将trunk复制到tags)。所以你的目录结构看起来应该像这样:

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 安装后 vendors 文件夹中的文件夹。例如,在上面的示例中,库将在 vendors\dist 文件夹中... 这并不理想。因此,我目前正在考虑以下方法:

mypackages/MyLibrary/tags/REL-1.0

因此,该存储库是mypackages,每个库都有一个文件夹。在其中有三个必需的文件夹(trunk等)。然后,在每个版本发布下面的标记中有文件夹。
您可以像这样记录文件夹:
bower install svn+https://svn.mycompany.com/mypackages/MyLibrary#REL-1.0

您可以使用 #trunk 获取主干。有点奇怪。如果您没有提供任何版本(文件夹),它将从标签中获取最新的文件夹(不确定是按排序顺序还是提交日期完成)。如果在标签中没有文件夹,则会获取主干。不确定如何访问分支中的任何内容。

另外,如果您的仓库有安全性保护,如果您保存了身份验证信息,它将自动工作。不知道如果您没有保存身份验证信息,该怎么办。

希望这能帮到您!我自己也还在摸索中...


哇,非常感谢! 我会尝试一下。关于SVN仓库结构的提示真的很重要。 所以你的意思是运行“bower install”会注册我的项目以进行分发?我原本认为“bower install”只用于将依赖项放入工作区中的bower组件。 - Lior Chaga

2
在过去的几周里,我取得了很大的进步,并很高兴与像我一样的grunt+bower新手分享我的发现。
看起来,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 注册表中注册)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接