社内ツールでprivateなリポジトリに置いておきたいけど、いろんなプロジェクトでcomposer install
したいというケースは以外とあるんじゃないかと思います。
そういう時は、composer.json
にrepositories
を追加して、GitLab(ここではGitLabとしています)のURLを指定するとインストールが可能になります。
しかしそのままだとpublicなリポジトリしかだめですが、privateなリポジトリであれば、GitLabからPersonal AcessTokenを取得して、composer config --global --auth gitlab-token.gitlab.com [ACESS_TOKEN]
を実行すればcomposer install
が可能になります。
{
"name": "taisa831/sample-framework-app",
"license": "MIT",
"authors": [
{
"name": "taisa",
"email": "g5.taisa831@gmail.com"
}
],
"require": {
"taisa831/sample-framework": "dev-master"
},
"repositories": [
{
"type": "vcs",
"url": "git@gitlab.com:taisa831/sample-framework.git"
}
]
}
では、Webフレームワークをprivateなリポジトリに公開して利用するところまでをやってみます。(今回は便宜上publicにしています)
事前準備
ここではサンプルのWebフレームワーク(実装なし)をプロジェクトにインストールできるようにすることにします。リポジトリは2つで、フレームワークの実態であるsample-framework
とフレームワークの雛形となるsample-framework-app
を用意しておきました。それぞれの構成は以下の通りです。
#フレームワークの実体
.
├── README.md
├── composer.json
├── src
├── tests
└── vendor
#フレームワークの雛形
.
├── README.md
├── composer.json
├── composer.lock
├── config
├── controllers
├── models
├── public
│ └── index.php
├── routes
├── tests
└── views
このsample-framework-app
のcomposer.json
には上記でも記載した内容が書かれています。require
にtaisa831/sample-framework
を指定し、repositories
にGitLabのURLを指定することで探してくれるようになります。
{
"name": "taisa831/sample-framework-app",
"license": "MIT",
"authors": [
{
"name": "taisa",
"email": "g5.taisa831@gmail.com"
}
],
"require": {
"taisa831/sample-framework": "dev-master"
},
"repositories": [
{
"type": "vcs",
"url": "git@gitlab.com:taisa831/sample-framework.git"
}
]
}
Webフレームワークを利用したプロジェクトを作成する
これでWebフレームワークを利用するプロジェクトを作成することができます。通常ならcomposer create-project --prefer-dist taisa831/sample-framework-app dev-master
このようなコマンドでいけるのですが、packagist
に登録していないので手動やります。(satisを使えばというのもありますがそこまでしたくはないので)
$ git clone git@gitlab.com:taisa831/sample-framework-app.git web-app
$ cd web-app
$ rm -rf .git
# privateなリポジトリの場合はここ(https://gitlab.com/profile/personal_access_tokens)からアクセストークンを取得し設定します。
# 今回はpublicなので不要です
$ composer config --global --auth gitlab-token.gitlab.com [ACESS_TOKEN]
$ composer install
$ git init
$ git remote add origin [新しいリポジトリ]
これでフレームワークの雛形と実体が合わさり環境構築の完了となります。
.
├── README.md
├── composer.json
├── composer.lock
├── config
├── controllers
├── models
├── public
│ └── index.php
├── routes
├── tests
├── vendor
│ ├── autoload.php
│ ├── composer
│ │ ├── ClassLoader.php
│ │ ├── LICENSE
│ │ ├── autoload_classmap.php
│ │ ├── autoload_namespaces.php
│ │ ├── autoload_psr4.php
│ │ ├── autoload_real.php
│ │ ├── autoload_static.php
│ │ └── installed.json
│ └── taisa831
│ └── sample-framework ←フレームワークの実体
│ ├── README.md
│ ├── composer.json
│ ├── src
│ └── tests
└── views