设置 composer.json
$ composer init
Welcome to the Composer config generator
This command will guide you through creating your composer.json config.
Package name (<vendor>/<name>) [administrator/lh1010]: lh1010/lh1010
Description []: lh1010
Author [Jasper <610392592@qq.com>, n to skip]:
Minimum Stability []: dev
Package Type (e.g. library, project, metapackage, composer-plugin) []: library
License []: MIT
Define your dependencies.
Would you like to define your dependencies (require) interactively [yes]? no
Would you like to define your dev dependencies (require-dev) interactively [yes]? no
{
"name": "lh1010/lh1010",
"description": "lh1010",
"type": "library",
"license": "MIT",
"authors": [
{
"name": "Jasper",
"email": "610392592@qq.com"
}
],
"minimum-stability": "dev",
"require": {}
}
Do you confirm generation [yes]? yes
Would you like the vendor directory added to your .gitignore [yes]? yes
生成后的 composer.json:
{
"name": "lh1010/lh1010",
"description": "lh1010",
"type": "library",
"license": "MIT",
"authors": [
{
"name": "Jasper",
"email": "610392592@qq.com"
}
],
"minimum-stability": "dev",
"require": {}
}
修改 composer.json:
{
"name": "lh1010/lh1010",
"description": "lh1010",
"type": "library",
"license": "MIT",
"authors": [
{
"name": "Jasper",
"email": "610392592@qq.com"
}
],
"minimum-stability": "dev",
"require": {
"php": ">=5.4.0"
},
"autoload": {
"psr-4": {
"Lh1010\\": "src/"
}
}
}
src 相关文件
在当面目录下创建 src/Tools.php 测试文件:
<?php
namespace Lh1010;
class Tools
{
public static function demo()
{
echo 'This is demo';
}
}
映射关系
composer install
此时会在 vendor/composer/autoload_psr4.php 中生成命名空间和目录的映射关系,被包在一个数组中:
<?php
// autoload_psr4.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'Lh1010\\' => array($baseDir . '/src'),
);
本地测试
<?php
require './vendor/autoload.php';
use Lh1010\Tools;
Tools::demo();
packagist
上传 Composer 包至 github。注意:.gitignore 屏蔽 vendor 文件。
创建 packagist.org 账号,提交至 packagist:
到这里,composer 包就提交成功了,如图:
网上有说同步的问题,但在测试当天(19-03-21),通过 packagist 提交后,与 github 已自动同步。可能原因:使用 github 账号授权登录 packagist(待验证)。
测试 dev 版本:
composer require lh1010/lh1010 dev-master
当前目录下创建 index.php:
<?php
require './vendor/autoload.php';
use Lh1010\Tools;
Tools::demo();
发布正式版
版本默认是 dev-master,Composer 包的版本号会从 Git 的 tag 中同步过来,因此先设置项目代码的 tag。
git tag 1.0.0
git push --tag
composer lh1010/lh1010