Frontend 如何部署专用bower服务器

Frontend 如何部署专用bower服务器,frontend,bower,Frontend,Bower,我想为我的web开发团队部署一个专用的bower软件包服务器?我知道我们公司有一个专用的npm软件包服务器。可以部署bower软件包服务器吗?网站上有一个关于如何执行此操作的指南。我把这篇文章贴在这里: 如何托管私有bower注册表 由Toran Billups于2013年8月4日出版 有人会说,我们现在编写客户端javascript的最大障碍是我们没有现成的包管理器。谢天谢地,在过去的一年里,出现了多个包管理解决方案来解决这个问题。我最近开始玩的一款叫做bower的手机,由twitter的工程

我想为我的web开发团队部署一个专用的bower软件包服务器?我知道我们公司有一个专用的npm软件包服务器。可以部署bower软件包服务器吗?

网站上有一个关于如何执行此操作的指南。我把这篇文章贴在这里:

如何托管私有bower注册表 由Toran Billups于2013年8月4日出版

有人会说,我们现在编写客户端javascript的最大障碍是我们没有现成的包管理器。谢天谢地,在过去的一年里,出现了多个包管理解决方案来解决这个问题。我最近开始玩的一款叫做bower的手机,由twitter的工程团队开发。我选择bower的主要原因是api与npm几乎相同(简单且经验证可帮助javascript开发人员完成工作)

开始使用bower很简单,有大量的文章介绍了如何开始使用bower进行基本的包管理。缺少的是一篇关于如何在组织内部使用bower进行内部(防火墙后)包管理的文章。所以不用再多说了。。。下面是我试图讨论这个急需的话题

你为什么要问内部的凉亭? 您可能托管私有注册表的一个原因是,您的公司有一个专有的javascript库,您不能将此代码公开。将web应用程序和javascript包都放在防火墙后面的另一个原因是,它将减少您对外部世界的依赖(即,当github或public bower网站停机时,不会影响您的业务)

1.)部署内部bower web应用程序

第一步是建立一个bower web应用程序,它只按名称存储git存储库的位置。如果你可以/想要主持一个ruby web应用程序,bower有一个sinatra应用程序来完成这项工作。如果你喜欢python,我编写了一个简单的django应用程序来实现这一点。或者您也可以自己编写,因为它的核心是一个简单的restapi,用于name/url

对于这个例子,我将使用django应用程序,因为我想看看我能多快在香草覆盆子pi上获得一个私有bower注册表。本地启动python/django bower注册表

git clone https://github.com/toranb/django-bower-registry.git registry

cd ~/Projects/registry

mkvirtualenv registry

pip install -r requirements.txt

python manage.py dev syncdb --migrate --noinput

python manage.py dev runserver
2.)设置裸存储库的预发布步骤

bower 1.0缺少的一个特性是您没有存储javascript文件的商店(主要是因为它假设您需要的每个包都是一个公共可访问的github存储库)。您可以绕过这个问题,但是因为BowerAPI不支持它,所以需要手动执行几个步骤

需要手动执行的第一步是为要在内部存储的javascript包打开git存储库(bower也可以使用独立文件,但为了便于升级,我更喜欢基于git的方法)。在本例中,我将只拉下矩库,因为它通常用于涉及datetime的项目

cd ~/Projects

git clone https://github.com/moment/moment.git
接下来,您需要在web服务器上创建一个裸git存储库(或者存储js文件的其他位置)。对于这个例子,为了简单起见,我将把javascript存储在本地web服务器上

cd ~/Projects/registry/api/static/api/packages

git init --bare moment.git
3.)将git存储库推送到web服务器上

现在我们有了一个空的git存储库,我们可以添加一个远程存储库并推送代码。注意,我在这里使用ssh,因此需要进行身份验证

关于我在下面显示的路径的简要说明-我的用户名是toranb,我的项目目录的完整路径是
/Users/toranb/Projects
,因此,如果在开发人员计算机或远程web服务器上本地执行此操作,请确保更改以下内容

cd ~/Projects/moment`

git checkout master (moment defaults to the develop branch and bower plays nice with master)

git remote add bower ssh://toranb@127.0.0.1/Users/toranb/Projects/registry/api/static/api/packages/moment.git
在推动此操作之前,您需要让ssh设置在本地工作(如果您在OSX上,请使用此bash脚本获取相同的linux ssh副本id)。如果您还没有在计算机上生成ssh密钥,github有一个很好的教程

ssh-copy-id -i ~/.ssh/id_rsa toranb@127.0.0.1

git push bower master
如果您需要基于标签(特定于ie版本的库)进行安装,还应该将标签推送到新的bower remote

git推送——标签bower master

4.)向bower注册包裹

下一步是ssh://使用内置的“bower register”命令(这里是解决方法)。如果您尝试=>bower注册时刻ssh://... 它将因错误而失败

bower-EINVFORMAT注册表只接受以git开头的URL://

因为bower只适用于公共可访问的存储库,所以它拒绝ssh://因为它需要身份验证。因此,现在我使用curl(本质上是一个http帖子,在给定名称/url的内部bower上创建包)来解决这个问题

5.)在前端项目中安装该软件包

现在我们的bower web应用程序有了一个指向web服务器上git存储库的名称/url,我们可以使用bower安装moment

cd~/Projects/your_project_去这里

在您可以使用bower进行安装之前,我们需要告知您的内部bower注册表(因为bower默认为组织外部的公共bower web应用程序)

echo'{“注册表”:http://localhost:8000“}'>.bowerrc

现在我们已经在您的本地项目中使用.bowerrc文件安装了您的bower注册表,我们可以使用您的内部bower web应用程序安装Momente

npm install bower

bower install moment
如果您想安装特定版本的moment,并将标记推送到web服务器远程端,请使用如下可选的哈希版本

bower安装“瞬间2.1.0”

我希望,如果/当bower正式支持这样的私有存储时,上述冗长的注册过程将消失。但是现在,这个解决方案允许您控制web应用程序和您所依赖的所有生产javascript包


还请注意,att
npm install bower

bower install moment