1.一个github帐号
2.一个packagist帐号
3.一台安装composer的开发机php
为了组(tao)件(bi)化(xue)开(xi)发,在最近作项目的时候,把一部分做为单独的组件来开发。组件化离不开跟包打交道,通过最近的折腾,记录一下本身开发包的过程。laravel
首先,新建一个 Laravel 项目,并在项目根目录下新建 packages
文件夹。
在 packages
文件夹中,新建以你名字为命名的文件夹,并在此文件夹内创建以项目名命名的文件夹。git
├── app
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── package.json
├── packages
└── packagedemo复制代码
如上例,进入 packages\sliverwing\packagedemo
运行 composer init
命令,进入 Composer config generator
分别键入 Package name
Description
Author
Minimum Stability
Package Type
License
和交互方式定义所依赖的库 require
require-dev
后即可生成该包的 composer.json
接下来,编辑 composer.json
增长如下内容:github
"autoload": {
"psr-4": {
"Sliverwing\\PackageDemo\\": "src/"
}
},复制代码
这里定义了,该包发布后 composer
如何对项目进行自动加载。
在 Laravel 项目下的 composer.json
中,修改 autoload
配置,使得在编写包的过程当中 Laravel 项目能自动加载包。web
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/",
"Sliverwing\\PackageDemo\\": "packages/sliverwing/packagedemo/src/"
}
},复制代码
接下来,在 packagedemo
中新建 src
config
migrations
文件夹。json
└── packagedemo
├── composer.json
├── config
├── migrations
└── src复制代码
src
这里是主要存放代码的地方。能够参考 Laravel 中 app
的目录来组织 src
文件夹中的目录。config
和 migrations
比较容易理解,存放包的配置文件和扩展,固然能够根据包内业务的须要加入 views
或者其余须要 pulish
的文件目录。bootstrap
咱们在 config
文件夹下新建 packagedemo.php
,用来保存包的配置信息。api
回到 laravel
项目的根目录,使用 php artisan make:provider PackageDemoServiceProvider
建立包的 ServiceProvider
。
把 app\Providers\PackageDemoServiceProvider.php
移动到 packages\sliverwing\packagedemo\src
下,并修改 namespace
。bash
参考 laravel.com/docs/5.3/pa…app
继续修改,使得在运行 php artisan vendor:publish
时,咱们的配置文件能够复制到 Laravel 工程的 config
文件下。
在 boot
方法里,新增代码以下:
$this->publishes([
__DIR__.'/../config/packagedemo.php' => config_path('packagedemo.php'),
]);复制代码
接下来,把 PackageDemoServiceProvider
加入到 config\app.php
中。
Sliverwing\PackageDemo\PackageDemoServiceProvider::class,复制代码
在 Laravel 项目目录下,运行 composer dump-autoload
,而后运行 php artisan vendor:publish
能够发现,包下面的配置文件复制到 Laravel 项目中 config
文件夹下了。
接下来,能够在 src
文件夹下建立 Http\Controllers
文件夹,并根据业务须要,新增包内的 Controller ,也能够对现有的组件进行扩展。
也能够参考其余包项目来进一步完善本身的项目组建。将写好的 包 发送到 GitHab 上
git add .
git commit -m 'commit'
git push
// 最好打上 tag 也推送过去
git tag 1.0.1 -a -m 'v1.0.1 release'
git push --tags复制代码
1.首先要在Packagist上登陆
2.点击顶部导航条中的Summit按钮
3.在输入框中输入github上的仓库地址,如:https://github.com/WXiangQian
4.而后点击Check按钮
5.Packagist会去检测此仓库地址的代码是否符合Composer的Package包的要求
6.检测正常的话,会出现Submit按钮,再点击一下Submit按钮,咱们的包就提交到Packagist上了
复制代码
1.从Packagist点击我的中心点击profile获取token而后复制
2.到github项目首页上点击settings、点击webhooks、点击addwebhook
3.把https://packagist.org/api/bitbucket?username=USERNAME&apiToken=TOKEN 复制到Payload URL,在下方输入密码后保存复制代码