在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命令安装组件并使用。

重要提示

  1. 如果你的项目做了CI/CD,可以使用 - php artisan vendor:publish --tag=migrations命令将数据迁移提前发布。
  2. 如果是ssh克隆仓库,一定要将克隆仓库用户的id_rsa,pub文件添加到Gitlab 中。