社内ツールで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
を用意しておきました。それぞれの構成は以下の通りです。
https://gitlab.com/taisa831/sample-framework.git
# フレームワークの実体 . ├── README.md ├── composer.json ├── src ├── tests └── vendor
https://gitlab.com/taisa831/sample-framework-app.git
# フレームワークの雛形 . ├── 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