22
composer-scriptsついて @Hiraku

composer-scriptsについて

Embed Size (px)

Citation preview

composer-scriptsについて@Hiraku

自己紹介

• 中野 拓 (@Hiraku)

• 口癖「composerが遅い」

• http://packagist.jp

• https://github.com/hirak/prestissimo

hirak/prestissimo

• composerが速くなるプラグイン

• おかげさまで大分バグが潰せた

prestissimoで色々試してみたのでその共有です

開発で使うphpxxx

• phpunit, php_codesniffer, phpmd, ...

• どうやってインストールする?

• どうやって実行する?

globalインストールはよくない

• 「phpunit」「phpcs」というコマンドがglobalにある前提で開発すると…

• 場合によっては特定のphpunitバージョンを要求したりややこしい

• 純粋に開発環境セットアップが面倒

npmの場合• localインストールする文化がある

• npm install --save-dev xxxxxxx

• 実行するときはnpm test, npm run xxxxx

• http://qiita.com/Jxck_/items/efaff21b977ddc782971

composerでnpmを真似る

• composer require --dev phpunit/phpunit

• composer.jsonのscriptsにコマンドを生やす

scripts: { test: phpunit --colors=always, lint: phpcs, fmt: phpcbf, doc: php bin/apigen.phar generate, metrics: php bin/phpmetrics.phar --report-html=artifacts/metrics.html src/},

某言語のサブコマンドを真似る

$ composer test #phpunit$ composer lint #phpcs$ composer fmt #phpcbf$ composer doc #apigen$ composer metrics #phpmetrics

サブコマンドのよさ

• composer listに出てくる

• vendor/bin/... って打つより綺麗

• vendor/bin/は設定で変更できるので、ベタ書きすべきでない

• 開発者はcomposer installするだけで全てのツールが使える

コマンド別の設定

• phpunit.xml.dist を作成

• .gitignoreでphpunit.xmlを無視

• 開発者がphpunit.xmlを作って好きな設定でphpunitを実行できる余地を残す

使ってるツール紹介

phpunit/phpunit (test)

squizlabs/php_codesniffer

• phpcs (lint) とphpcbf (fmt) がある両方phpcs.xml.distで設定できる

apigen/apigen

• 生成されたレポートが読みにくかったら名前空間の切り方が汚い

phpmetrics/phpmetrics

pharの悩み

pharとrequire-dev

• phar版を配布しているツールは多い

• phpunit.phar, phpcs.phar, ...

• ダウンロードしてphp phpunit.pharすれば使えて便利

• どっちを使うべき?

比較

composer phar

• リポジトリが汚れない • composer.jsonだけでリポジトリが完結する美しさ

• 依存が汚れない • インストールが楽

• インストールできない可能性がある

• 依存が汚れる• ライセンス違反のおそれ

require-devの悩み

• ツールのrequireしているライブラリが被る symfony/console使いすぎ

• apigenとphpmetricsを同時にインストール出来ない、とかPHPバージョンによっては起こりえる

• composer install --no-dev した時に消える 問題

pharはOSSライセンス違反のおそれがある• 依存ライブラリもまとめてpharに固めてある

• 依存ライブラリのLICENSE.txtはどこに?

特に結論はないです