在 Gitlab 中新建私有化仓库
选择一个仓库名称
mkdir prirepos
进入目录
cd prirepos
使用 composer init
初始化私有化仓库
composer init
一路回车,或者填写你想要的参数或者组件包
{
"name": "chenghuiyong/prirepos",
"authors": [
{
"name": "会勇禾口王",
"email": "chenghuiyong1987@gmail.com"
}
],
"require": {}}
这里,参考 Laravel 框架组件化实现,举例实际应用场景:如果你的项目正在使用 migration 管理数据迁移和模型文件,当项目越大,数据迁移和模型文件就会变得越来越多,突然一天,另外一个项目也想使用该项目中的模型文件,本办法就是复制粘贴。如果有 1000 个文件,那么你复制 1000 次 …
下面推荐使用私有化仓库的方法,既做到共用,也保障安全,然后通过 composer 引入到新的项目中。
此时,我们私有仓库就会变成这样的结构设计
- .git
- database
- migrations
- 2014_10_12_100000_create_users_table
- src
- Models
- User.php
- ServiceProvider.php
- vendor
- composer.json
- composer.lock
于是,你的 composer.json
可能就会这样
{
"name": "prirepos/model",
"description": "The Prirepos Laravel Models",
"type": "library",
"require": {
"illuminate/database": "^6.0|^7.0",
"illuminate/support": "^6.0|^7.0",
"illuminate/console": "^6.0|^7.0",
},
"license": "MIT",
"authors": [
{
"name": "会勇禾口王",
"email": "chenghuiyong1987@gmail.com"
}
],
"autoload": {
"psr-4": {"Prirepos\\Model\\": "src/"}
},
"extra": {
"laravel": {
"providers": ["Prirepos\\Model\\ServiceProvider"]
}
},
"config": {"sort-packages": true},
"minimum-stability": "dev",
"prefer-stable": true,
"repositories": {
"packagist": {
"type": "composer",
"url": "https://mirrors.aliyun.com/composer/"
}
}
}
重要的 ServiceProvider.php
包含
<?php
namespace Prirepos\Model;
use Laravel\Lumen\Application as LumenApplication;
use Illuminate\Foundation\Application as LaravelApplication;
use Illuminate\Support\ServiceProvider as LaravelServiceProvider;
class ServiceProvider extends LaravelServiceProvider
{
/**
* Bootstrap.
*/
public function boot()
{$this->registerMigrations();
$this->publishes([__DIR__.'/../database/migrations' => database_path('migrations'),
], 'migrations');
}
/**
* Register Prirepos's migration files.
*
* @return void
*/
protected function registerMigrations()
{return $this->loadMigrationsFrom(__DIR__.'/../database/migrations');
}
}
最后,你的模型文件的命名空间就一定要变成
<?php
namespace Prirepos\Model;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{}
优化后,将代码提交到 Gitab 仓库中,比如:git@your_doman:prirepos/model.git
$ git commit -am "init"
$ git remote add origin git@your_doman:prirepos/model.git
$ git push origin -u master
在项目中安装 Composer 私有组件
通常,Composer 组件都是放到 Packgist 这样的公有平台,如果要使用私有组件,就需要修改composer.json
。
如果你的仓库没有使用 https
,就选择用ssh
方式克隆,不过,需要将 id_rsa,pub
提前添加到 Gitlab 中。
在respositoies
中添加你的私有仓库地址,
"repositories": {
"packagist": {
"type": "composer",
"url": "https://mirrors.aliyun.com/composer/"
},
"prirepos/model": {
"type": "vcs",
"url": "`git@your_doman:prirepos/model.git"
}
}
在 require
中添加组件名称
"require": {"prirepos/model": "dev-master"},
使用 composer update -vvv
命令安装组件并使用。
重要提示
- 如果你的项目做了 CI/CD,可以使用
- php artisan vendor:publish --tag=migrations
命令将数据迁移提前发布。 - 如果是
ssh
克隆仓库,一定要将克隆仓库用户的id_rsa,pub
文件添加到 Gitlab 中。