###1. 發布到 VCS(線上版本控制系統)
一旦你有一個包含 composer.json 文件的庫存儲在線上版本控制系統(例如:Git),你的庫就可以被 Composer 所安裝。在這個例子中,我們將 acme/hello-world 庫發布在 GitHub 上的 github.com/username/hello-world 中。
現在測試這個 acme/hello-world 包,我們在本地創建一個新的項目。我們將它命名為 acme/blog。此博客將依賴 acme/hello-world,而后者又依賴 monolog/monolog。我們可以在某處創建一個新的 blog 文件夾來完成它,并且需要包含 composer.json 文件:
~~~
{
"name": "acme/blog",
"require": {
"acme/hello-world": "dev-master"
}
}
~~~
在這個例子中 name 不是必須的,因為我們并不想將它發布為一個庫。在這里為 composer.json 文件添加描述。
現在我們需要告訴我們的應用,在哪里可以找到 hello-world 的依賴。為此我們需要在 composer.json 中添加 repositories 來源申明:
~~~
{
"name": "acme/blog",
"repositories": [
{
"type": "vcs",
"url": "https://github.com/username/hello-world"
}
],
"require": {
"acme/hello-world": "dev-master"
}
}
~~~
更多關于包的來源是如何工作的,以及還有什么其他的類型可供選擇,請查看資源庫。
這就是全部了。你現在可以使用 Composer 的 install 命令來安裝你的依賴包了!
小結: 任何含有 composer.json 的 GIT、SVN、HG 存儲庫,都可以通過 require 字段指定“包來源”和“聲明依賴”來添加到你的項目中。
###2. 發布到 packagist!!!
好的,你現在可以發布你的包了,但你不會希望你的用戶每次都這樣繁瑣的指定包的來源。
你可能注意到了另一件事,我們并沒有指定 monolog/monolog 的來源。它是怎么工作的?答案是 packagist。
Packagist 是 Composer 主要的一個包信息存儲庫,它默認是啟用的。任何在 packagist 上發布的包都可以直接被 Composer 使用。就像 monolog 它被 發布在 packagist 上,我們可以直接使用它,而不必指定任何額外的來源信息。
如果我們想與世界分享我們的 hello-world,我們最好將它發布到 packagist 上。這樣做是很容易的。
你只需要點擊那個大大的 "Submit Package" 按鈕并注冊。接著提交你庫的來源地址,此時 packagist 就開始了抓取。一旦完成,你的包將可以提供給任何人使用。