在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
包含
<?phpnamespace 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'); }}
最后,你的模型文件的命名空间就一定要变成
<?phpnamespace 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 中。