关键要点
composer.json
文件中。这允许您使用您使用 Gemfury 创建的任何私有 Composer 包,而无需每次要使用包时都添加单独的存储库。sudo gem install gemfury
安装它。假设您熟悉 Composer,这是最新且可能是最棒的 PHP 包管理器。如果不是,请查看 Alexander 的介绍,我相信您会立即被它吸引。您需要具备它的工作知识才能充分利用本文。
Composer 可与 Packagist(一个全面的公共包存储库)有效且无缝地结合使用。
但是,迟早会遇到您自己编写的包的情况,由于某种原因,该包无法开源并通过 Packagist 免费共享。
托管这些私有包有几种选择。您可以通过分别添加包的存储库来配置项目的 composer.json
文件。或者,Satis 允许您生成您自己的静态存储库。或者,Toran Proxy 允许您创建 Packagist 的自托管私有版本,一旦设置好,它比在您的 composer.json
中指定存储库更容易管理。
Gemfury 是一种 PaaS 替代方案。除了托管解决方案带来的安心感(尽管需要付费)之外,一个巨大的优势是它不仅支持 PHP Composer 包,还支持 Ruby Gems、Node.js npm、Python PyPi、APT、Yum 和 Nu-Get。如果您掌握多种语言,这将非常有用。
让我们深入了解如何使用它。
设置您的帐户
首先,您需要一个帐户。有一个 14 天的试用期,一个免费帐户限制为一个协作者和一个托管包,以及一系列每月 9 美元起价的其他计划。
您可以使用您的电子邮件地址或 Github 帐户注册。前往网站注册。
创建您的第一个包
为了演示如何将 Gemfury 用于私有 Composer 包,让我们逐步创建一个包,稍后我们将将其提交到服务以在其他项目中使用。
创建新包最简单的方法是使用以下命令:
composer init
它会问您一系列问题;以下是此过程的一个示例记录:
<code>... (此处省略与原文相同的composer init交互过程) ...</code>
如您所见,我们正在创建一个只有一个依赖项 Faker 的简单包。
接下来,让我们在新建的 composer.json
中添加一行,告诉它在哪里查找包的源代码。
"autoload": { "psr-0": { "Acme\": "src/" } },
现在让我们创建包本身。我们将创建一个只有一个用途的类;使用复杂、绝密的专有算法为电子商务平台生成折扣优惠券代码。
在您的工作目录中,创建 src
和 src/Acme
目录,然后创建名为 Coupon.php
的以下文件:
<?php namespace Acme; use Faker\Factory; class Coupon { public static function generate($percent) { $faker = Factory::create(); return sprintf('%s-%s-%d', strtoupper(date('M')), strtoupper($faker->word()), intval($percent)); } }
现在运行 composer install
来加载我们唯一的依赖项并配置自动加载器。
这就是我们构建的包。现在将其上传到 Gemfury。
要继续,您需要您的 API 密钥。如果您转到您的仪表板,您会在“设置”下找到它。
构建和上传包最简单的方法是简单地使用 Git,并让 Gemfury 处理其余部分。
首先创建一个 .gitignore
文件,内容如下:
<code>vendor/ composer.lock</code>
现在初始化存储库:
git init
添加文件:
git add src git add composer.json
现在我们将添加一个 Git 远程仓库。您可以通过在 Gemfury 仪表板中选择“入门”,然后选择“PHP Composer”选项卡来找到相关的 URL。它看起来会像这样:
<code>https://your-username@git.fury.io/your-username/<package-name>.git</code>
请务必将 your-username
替换为您的 Gemfury 用户名(如果您使用 Github 注册,它将与您的 Github 用户名相同),并将其添加为远程仓库:
git remote add fury https://your-username@git.fury.io/your-username/coupon.git
此时,您有两个选择。第一种是使用显式版本控制,您在 composer.json
文件中指定版本,如下所示:
{ "name": "your-username/coupon", "description": "Generates a coupon code", "version": "1.0.0", ...
重要的是您使用语义版本控制。否则,您的包可能无法正确构建;这也可能导致一些措辞奇怪的错误消息。
或者,您可以使用 Git 标签。例如,使用标签创建新版本,如下所示:
git tag -a 1.0.0 -m "Version 1.0.0"
无论您采用哪种方法,下一步都是提交:
git commit -a -m "Initial commit"
最后,运行以下命令:
git push fury master --tags
这会将您的代码推送到 Gemfury,然后 Gemfury 会自动将其构建为包。
现在,如果您转到您的仪表板,您应该会看到您的新存储库已列出。接下来,让我们看看您如何在项目中使用它。
使用私有包
如果您返回仪表板并在左侧选择“Repos”,您会找到您的私有仓库 URL。这应该保持私密,所以请妥善保管。它看起来会像这样:
<code>https://php.fury.io/SECRET-CODE/your-username/</code>
正是 SECRET-CODE
使其不可猜测,因此实际上是私有的。
现在将其添加到您的项目的 composer.json
:
composer init
您只需要添加这个一个存储库即可使用您使用 Gemfury 创建的任何私有 Composer 包。无需每次要使用包时都添加单独的存储库。
现在您可以像在 Packagist 上一样需要您的私有包。这是一个项目 composer.json
的完整示例:
<code>... (此处省略与原文相同的composer init交互过程) ...</code>
其他方法
就我个人而言,我相信使用 Git 和标签是管理包最简单有效的方法。
或者,如果您愿意,您可以通过压缩包的源代码并通过 Gemfury 仪表板上传来自己构建它。
命令行工具
Gemfury 还提供了一个命令行工具。要安装它:
"autoload": { "psr-0": { "Acme\": "src/" } },
要列出您的包,您可以使用以下命令:
<?php namespace Acme; use Faker\Factory; class Coupon { public static function generate($percent) { $faker = Factory::create(); return sprintf('%s-%s-%d', strtoupper(date('M')), strtoupper($faker->word()), intval($percent)); } }
要查看特定包的版本:
<code>vendor/ composer.lock</code>
有关 CLI 的更多信息,请访问文档的相关部分。
总结
在本文中,我介绍了 Gemfury,这是管理私有存储库的众多选项之一。作为一种 PaaS 解决方案,它无需像 Toran 那样自托管选项的额外负担,并且比 Satis 更易于使用。它还具有支持各种语言的包的巨大优势,从 PHP Composer 包到 Ruby Gems 和 Node.js npm。当然,作为一种 PaaS 解决方案,它确实需要付费——但为什么不使用免费试用版或免费单包计划试用一下,看看它是否适合您呢?
(此处省略原文FAQs部分,因为该部分为常见问题解答,与文章主体内容重复性较高,伪原创后价值不高。)
以上是私人作曲家套餐带有gemfury的详细内容。更多信息请关注PHP中文网其他相关文章!