Composer を使用して、JavaScript の依存関係を管理することもできます。デフォルトでは、composer は PHP ライブラリのみのリポジトリである Packagist と呼ばれる 1 つのリポジトリのみを使用します。ただし、ここで提案されているように、javascript (またはその他の) ライブラリ用に独自のリポジトリを追加できます。
カスタムノックアウト js リポジトリを追加する composer.json は次のとおりです。
{
"require": {
"php": ">=5.3.2",
"symfony/symfony": ">=2.0.10,<2.1.0-dev",
"doctrine/orm": ">=2.1.0,<2.2.0-dev",
"twig/extensions": "*",
"symfony/assetic-bundle": "2.0.*",
"sensio/generator-bundle": "2.0.*",
"sensio/framework-extra-bundle": "2.0.*",
"sensio/distribution-bundle": "2.0.*",
"jms/security-extra-bundle": "1.0.*",
"knockout/knockout-js": "2.1.0"
},
"autoload": {
"psr-0": {
"Acme": "src/"
}
},
"repositories": [
{
"type": "package",
"package": {
"name": "knockout/knockout-js",
"version": "2.1.0",
"source": {
"type": "git",
"url": "https://github.com/SteveSanderson/knockout.git",
"reference": "v2.1.0"
}
}
},
{
"type": "package",
"package": {
"name": "knockout/knockout-js",
"version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/SteveSanderson/knockout.git",
"reference": "v2.0.0"
}
}
}
]
}
リポジトリはパッケージ (ライブラリのソースとバージョンの組み合わせ) で構成されます。ここでは、2 つのパッケージ (2.1.0、2.0.0) が既にビルド済みのノックアウト js のソースを含んでいるので、何もコンパイルする必要はありません。
現在、最新のコードをコンパイルして使用したい場合があります。このルーチンを自動化するには、git post-checkout フックを使用できると思いました。最新のコードを参照する新しいパッケージを追加します。
{
"type": "package",
"package": {
"name": "knockout/knockout-js",
"version": "master",
"source": {
"type": "git",
"url": "https://github.com/SteveSanderson/knockout.git",
"reference": "master"
}
}
}
必要なセクションでこのパッケージを参照してください。
"knockout/knockout-js": "master"
そして、ビルド手順を含むチェックアウト後のフック。knockout.js の場合は簡単です。
// vendor/knockout/knockout-js/.git/hooks/post-checkout
#!/bin/sh
echo "Building knockout.js";
`cd build && ./build-linux`;