设置 composer.json
$ composer initWelcome to the Composer config generatorThis command will guide you through creating your composer.json config.Package name (<vendor>/<name>) [administrator/lh1010]: lh1010/lh1010Description []: lh1010Author [Jasper <610392592@qq.com>, n to skip]:Minimum Stability []: devPackage Type (e.g. library, project, metapackage, composer-plugin) []: libraryLicense []: MITDefine your dependencies.Would you like to define your dependencies (require) interactively [yes]? noWould 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]? yesWould 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 测试文件:
<?phpnamespace 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'),);
本地测试
<?phprequire './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:
<?phprequire './vendor/autoload.php';use Lh1010\Tools;Tools::demo();
发布正式版
版本默认是 dev-master,Composer 包的版本号会从 Git 的 tag 中同步过来,因此先设置项目代码的 tag。
git tag 1.0.0git push --tag
composer lh1010/lh1010
