Skip to content

Instantly share code, notes, and snippets.

@KEINOS
Last active October 8, 2020 04:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save KEINOS/6ac96cbce47a5684a6ff06fdc77b1dbc to your computer and use it in GitHub Desktop.
Save KEINOS/6ac96cbce47a5684a6ff06fdc77b1dbc to your computer and use it in GitHub Desktop.
逆引き!Composer コマンド・ライン一覧 と 基礎知識 ref: https://qiita.com/KEINOS/items/86a16b06af6e936a1841
$ composer config bin-dir bin/
$ composer --version
Composer version 1.9.3 2020-02-04 12:58:49
$ COMPOSER=composer-other.json composer install
COMPOSER=composer-other.json composer require phpunit/phpunit
{
"bin": ["bin/my-script", "bin/my-other-script"]
}
{
"require-dev": {
"phpbench/phpbench": "@dev"
},
"scripts" :{
"bench": [
"Composer\\Config::disableProcessTimeout",
"./vendor/bin/phpbench run --revs=1000000 --iterations=10 --retry-threshold=1 --report=compare --report=aggregate ./bench/HashSampleBench.php"
]
}
}
{
"scripts": {
"post-create-project-cmd": [
"php 'config/rename_namespace.php'"
]
}
}
$ # コマンド・ラインで追記する例
$ composer require [vendor]/[package]
$ # コマンド・ラインで追記する例
$ composer require [vendor]/[package]
$ composer init
$ composer init
$ composer init --quiet
$ composer exec --list
$ composer exec
$ composer global config bin-dir --absolute
Changed current directory to /root/.composer
/root/.composer/vendor/bin
$ composer exec --list
$ composer global config bin-dir --absolute
Changed current directory to /root/.composer
/root/.composer/vendor/bin
$ composer run-script [script name] [args]
$ composer global config bin-dir --absolute
Changed current directory to /root/.composer
/root/.composer/vendor/bin
$ composer exec [script name] [args]
$ composer global config bin-dir --absolute
Changed current directory to /root/.composer
/root/.composer/vendor/bin
$ composer search [package]
$ composer init --require [vendor/package1] [vendor/package2]
$ composer install
$ composer require ****/****
[InvalidArgumentException]
Could not find a matching version of package ****/****. Check the package spelling, your version constraint and that the package is available in a stability which matches your minimum-stability (stable).
$ composer require ****/****
...
Cloning failed using an ssh key for authentication, enter your GitHub credentials to access private repos
Head to https://github.com/settings/tokens/new?scopes=repo&description=Composer+on+docker-desktop+2020-06-27+1405
to retrieve a token. It will be stored in "/root/.composer/auth.json" for future use by Composer.
Token (hidden):
$ composer require ****/****
[InvalidArgumentException]
Could not find a matching version of package ****/****. Check the package spelling, your version constraint and that the package is available in a stability which matches your minimum-stability (stable).
$ composer require [vendor/package1] [vendor/package2]
$ composer install --dry-run
$ composer require ****/****
...
Cloning failed using an ssh key for authentication, enter your GitHub credentials to access private repos
Head to https://github.com/settings/tokens/new?scopes=repo&description=Composer+on+docker-desktop+2020-06-27+1405
to retrieve a token. It will be stored in "/root/.composer/auth.json" for future use by Composer.
Token (hidden):
$ composer diagnose
Checking composer.json: OK
Checking platform settings: OK
Checking git settings: OK
Checking http connectivity to packagist: OK
Checking https connectivity to packagist: OK
Checking github.com rate limit: OK
Checking disk free space: OK
Checking pubkeys: FAIL
Missing pubkey for tags verification ⇦ ここ
Missing pubkey for dev verification ⇦ ここ
Run composer self-update --update-keys to set them up
Checking composer version: OK
Composer version: 1.10.8
PHP version: 7.4.7
PHP binary path: /usr/local/bin/php
OpenSSL version: OpenSSL 1.1.1d 10 Sep 2019
$ echo $?
1
$ composer require ****/****
...
Cloning failed using an ssh key for authentication, enter your GitHub credentials to access private repos
Head to https://github.com/settings/tokens/new?scopes=repo&description=Composer+on+docker-desktop+2020-06-27+1405
to retrieve a token. It will be stored in "/root/.composer/auth.json" for future use by Composer.
Token (hidden):
$ composer diagnose
Checking composer.json: OK
Checking platform settings: OK
Checking git settings: OK
Checking http connectivity to packagist: OK
Checking https connectivity to packagist: OK
Checking github.com rate limit: OK
Checking disk free space: OK
Checking pubkeys: FAIL
Missing pubkey for tags verification ⇦ ここ
Missing pubkey for dev verification ⇦ ここ
Run composer self-update --update-keys to set them up
Checking composer version: OK
Composer version: 1.10.8
PHP version: 7.4.7
PHP binary path: /usr/local/bin/php
OpenSSL version: OpenSSL 1.1.1d 10 Sep 2019
$ echo $?
1
$ composer init --require vendor/package1:1.0.0
$ composer init --require vendor/package1:1.0.0
$ http_proxy=[URL Proxy] composer install
$ composer init --require-dev [vendor/package1] [vendor/package2]
$ composer update
composer init --repository '{"type":"vcs","url":"https://github.com/[YOUR]/[REPO]"}' --require [vendor]/[package]:dev-master
$ http_proxy=[URL Proxy] composer install
$ composer create-project [vendor]/[package]
$ http_proxy=[URL Proxy] composer install
$ compose create-project [vendor]/[project] [target-directory]
$ composer update
$ composer install
$ composer update --dry-run
$ composer init --require [vendor/package1] [vendor/package2]
$ composer init --require [vendor/package1] [vendor/package2]
$ composer install --dry-run
$ composer update [vendor]/[package]
$ composer install
$ composer update [vendor]/*
$ composer install
$ composer outdated
$ composer install
$ composer show -lo
composer global require "[vendor]/[package]=[version]"
$ composer self-update
$ composer install --ignore-platform-reqs
$ composer dump-autoload
$ composer install --dry-run
$ composer dump-autoload
$ composer install --ignore-platform-reqs
$ composer dump-autoload
$ http_proxy=[URL Proxy] composer install
$ composer require [vendor]/[package]
$ http_proxy=[URL Proxy] composer install
$ composer require
$ ./composer.phar --version
$ php ./composer.phar --version
$ php /path/to/downloaded/composer.phar --version
$ composer init --require vendor/package1:1.0.0
$ http_proxy=[URL Proxy] composer install
$ composer require [vendor]/[package]:dev-master
$ composer update
$ composer config repositories.github.com vcs https://github.com/[YOUR]/[REPO]
$ http_proxy=[URL Proxy] composer install
$ composer require [vendor]/[package]:dev-master
$ composer update
$ composer config repositories.github.com vcs https://github.com/[YOUR]/[REPO]
$ composer update --dry-run
$ composer config repositories.github.com '{"type": "vcs", "url": "https://github.com/[YOUR]/[REPO]", "//url": "https://github.com/[YOUR]/[REPO].git"}'
$ composer update [vendor]/[package]
$ composer remove [vendor]/[package]
$ composer update [vendor]/*
"config": {
"bin-dir": "bin/"
}
$ composer outdated
$ composer remove [vendor]/[package]
$ composer show -lo
"config": {
"bin-dir": "bin/"
}
$ composer self-update
$ composer remove [vendor]/[package1] [vendor]/[package2]
$ # composer.phar があるか確認
$ ls ./
composer.phar
$ # PHP 本体(ランタイム)の保存先ディレクトリを確認
$ dirname $(which php)
$ # PHP と同じディレクトリに拡張子なしで移動し、実行権限を与える
$ mv ./composer.phar $(dirname $(which php))/composer && chmod +x $_
$ # 動作確認
$ composer --version
$ # カレント・ディレクトリに composer.phar があるか確認
$ ls ./
composer.phar
$ # PHP 本体(ランタイム)の保存先ディレクトリを確認
$ dirname $(which php)
/usr/bin/php
$ # PHP と同じディレクトリに拡張子なしで移動し、実行権限を与える
$ mv ./composer.phar $(dirname $(which php))/composer && chmod +x "$_"
$ # 動作確認
$ composer --version
$ composer self-update --stable
$ composer clear-cache
$ composer self-update --preview
"config": {
"bin-dir": "bin/"
}
$ composer dump-autoload
"config": {
"bin-dir": "bin/"
}
$ composer self-update -r
$ composer self-update --rollback
"config": {
"bin-dir": "bin/"
}
$ composer dump-autoload
$ composer config --unset [setting-key]
$ composer self-update --update-keys
$ composer help
$ composer require [vendor]/[package]
"config": {
"bin-dir": "bin/"
}
$ composer require --dev [vendor]/[package]
"config": {
"bin-dir": "bin/"
}
$ composer require
"config": {
"bin-dir": "bin/"
}
$ composer require [vendor]/[package]:dev-master
"config": {
"bin-dir": "bin/"
}
$ composer init --require vendor/package1:1.0.0
brew install composer
$ # "||" 区切りで指定する
$ composer require phpunit/phpunit:^5.0||^4.0||^3.0
$ composer check-platform-reqs
$ composer require [vendor]/[package]:dev-master
"config": {
"bin-dir": "bin/"
}
$ # "||" 区切りで指定する
$ composer require phpunit/phpunit:^5.0||^4.0||^3.0
"config": {
"bin-dir": "bin/"
}
$ composer config repositories.github.com vcs https://github.com/[YOUR]/[REPO]
"config": {
"bin-dir": "bin/"
}
$ composer config repositories.github.com '{"type": "vcs", "url": "https://github.com/[YOUR]/[REPO]", "//url": "https://github.com/[YOUR]/[REPO].git"}'
"config": {
"bin-dir": "bin/"
}
$ composer remove [vendor]/[package]
$ composer show -lo
$ composer remove [vendor]/[package1] [vendor]/[package2]
"config": {
"bin-dir": "bin/"
}
$ composer remove [vendor]/[package]
$ # 検証バージョン
$ composer --version
Composer version 1.9.0 2019-08-02 20:55:32
$ # 作業ディレクトリの作成と移動
$ mkdir hello-world && cd $_
$ # composer の動作確認
$ composer diagnose
...
$ # パッケージの初期化
$ composer init --quiet --name sample/hello-world --require rivsen/hello-world:dev-master
$ # 依存パッケージのインストール
$ composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing rivsen/hello-world (dev-master 82d892b): Cloning 82d892b200 from cache
Writing lock file
Generating autoload files
$ # ディレクトリ構造の確認
$ tree
.
├── composer.json
├── composer.lock
└── vendor
├── autoload.php
├── composer
│   ├── ClassLoader.php
│   ├── LICENSE
│   ├── autoload_classmap.php
│   ├── autoload_namespaces.php
│   ├── autoload_psr4.php
│   ├── autoload_real.php
│   ├── autoload_static.php
│   └── installed.json
└── rivsen
└── hello-world
├── composer.json
├── readme.md
├── src
│   └── Hello.php
└── test.php
5 directories, 15 files
$ # プログラムのファイルを作成
$ touch hello-world.php
$ # プログラムを記載(好きなエディタで。以下は vim )
$ vi hello-world.php
...
$ # プログラムの内容
$ cat hello-world.php
<?php
require_once "vendor/autoload.php";
$hello = new Rivsen\Demo\Hello();
echo $hello->hello(), PHP_EOL;
$ # プログラムの実行
$ php hello-world.php
Hello World!
$ composer remove [vendor]/[package1] [vendor]/[package2]
$ # 検証バージョン
$ composer --version
Composer version 1.9.0 2019-08-02 20:55:32
$ # 作業ディレクトリの作成と移動
$ mkdir hello-world && cd $_
$ # composer の動作確認
$ composer diagnose
...
$ # パッケージの初期化
$ composer init --quiet --name sample/hello-world --require rivsen/hello-world:dev-master
$ # 依存パッケージのインストール
$ composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing rivsen/hello-world (dev-master 82d892b): Cloning 82d892b200 from cache
Writing lock file
Generating autoload files
$ # ディレクトリ構造の確認
$ tree
.
├── composer.json
├── composer.lock
└── vendor
├── autoload.php
├── composer
│   ├── ClassLoader.php
│   ├── LICENSE
│   ├── autoload_classmap.php
│   ├── autoload_namespaces.php
│   ├── autoload_psr4.php
│   ├── autoload_real.php
│   ├── autoload_static.php
│   └── installed.json
└── rivsen
└── hello-world
├── composer.json
├── readme.md
├── src
│   └── Hello.php
└── test.php
5 directories, 15 files
$ # プログラムのファイルを作成
$ touch hello-world.php
$ # プログラムを記載(好きなエディタで。以下は vim )
$ vi hello-world.php
...
$ # プログラムの内容
$ cat hello-world.php
<?php
require_once "vendor/autoload.php";
$hello = new Rivsen\Demo\Hello();
echo $hello->hello(), PHP_EOL;
$ # プログラムの実行
$ php hello-world.php
Hello World!
$ composer clear-cache
$ # 検証バージョン
$ composer --version
Composer version 1.9.0 2019-08-02 20:55:32
$ # 作業ディレクトリの作成と移動
$ mkdir hello-world && cd $_
$ # composer の動作確認
$ composer diagnose
...
$ # パッケージの初期化
$ composer init --quiet --name sample/hello-world --require rivsen/hello-world:dev-master
$ # 依存パッケージのインストール
$ composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing rivsen/hello-world (dev-master 82d892b): Cloning 82d892b200 from cache
Writing lock file
Generating autoload files
$ # ディレクトリ構造の確認
$ tree
.
├── composer.json
├── composer.lock
└── vendor
├── autoload.php
├── composer
│   ├── ClassLoader.php
│   ├── LICENSE
│   ├── autoload_classmap.php
│   ├── autoload_namespaces.php
│   ├── autoload_psr4.php
│   ├── autoload_real.php
│   ├── autoload_static.php
│   └── installed.json
└── rivsen
└── hello-world
├── composer.json
├── readme.md
├── src
│   └── Hello.php
└── test.php
5 directories, 15 files
$ # プログラムのファイルを作成
$ touch hello-world.php
$ # プログラムを記載(好きなエディタで。以下は vim )
$ vi hello-world.php
...
$ # プログラムの内容
$ cat hello-world.php
<?php
require_once "vendor/autoload.php";
$hello = new Rivsen\Demo\Hello();
echo $hello->hello(), PHP_EOL;
$ # プログラムの実行
$ php hello-world.php
Hello World!
$ composer init
$ composer create-project [vendor]/[package]
$ composer config [options] [setting-key] [setting-value1] ... [setting-valueN]
$ # 検証バージョン
$ composer --version
Composer version 1.9.0 2019-08-02 20:55:32
$ # 作業ディレクトリの作成と移動
$ mkdir hello-world && cd $_
$ # composer の動作確認
$ composer diagnose
...
$ # パッケージの初期化
$ composer init --quiet --name sample/hello-world --require rivsen/hello-world:dev-master
$ # 依存パッケージのインストール
$ composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing rivsen/hello-world (dev-master 82d892b): Cloning 82d892b200 from cache
Writing lock file
Generating autoload files
$ # ディレクトリ構造の確認
$ tree
.
├── composer.json
├── composer.lock
└── vendor
├── autoload.php
├── composer
│   ├── ClassLoader.php
│   ├── LICENSE
│   ├── autoload_classmap.php
│   ├── autoload_namespaces.php
│   ├── autoload_psr4.php
│   ├── autoload_real.php
│   ├── autoload_static.php
│   └── installed.json
└── rivsen
└── hello-world
├── composer.json
├── readme.md
├── src
│   └── Hello.php
└── test.php
5 directories, 15 files
$ # プログラムのファイルを作成
$ touch hello-world.php
$ # プログラムを記載(好きなエディタで。以下は vim )
$ vi hello-world.php
...
$ # プログラムの内容
$ cat hello-world.php
<?php
require_once "vendor/autoload.php";
$hello = new Rivsen\Demo\Hello();
echo $hello->hello(), PHP_EOL;
$ # プログラムの実行
$ php hello-world.php
Hello World!
$ composer config bin-dir phar/
$ # 検証バージョン
$ composer --version
Composer version 1.9.0 2019-08-02 20:55:32
$ # 作業ディレクトリの作成と移動
$ mkdir hello-world && cd $_
$ # composer の動作確認
$ composer diagnose
...
$ # パッケージの初期化
$ composer init --quiet --name sample/hello-world --require rivsen/hello-world:dev-master
$ # 依存パッケージのインストール
$ composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing rivsen/hello-world (dev-master 82d892b): Cloning 82d892b200 from cache
Writing lock file
Generating autoload files
$ # ディレクトリ構造の確認
$ tree
.
├── composer.json
├── composer.lock
└── vendor
├── autoload.php
├── composer
│   ├── ClassLoader.php
│   ├── LICENSE
│   ├── autoload_classmap.php
│   ├── autoload_namespaces.php
│   ├── autoload_psr4.php
│   ├── autoload_real.php
│   ├── autoload_static.php
│   └── installed.json
└── rivsen
└── hello-world
├── composer.json
├── readme.md
├── src
│   └── Hello.php
└── test.php
5 directories, 15 files
$ # プログラムのファイルを作成
$ touch hello-world.php
$ # プログラムを記載(好きなエディタで。以下は vim )
$ vi hello-world.php
...
$ # プログラムの内容
$ cat hello-world.php
<?php
require_once "vendor/autoload.php";
$hello = new Rivsen\Demo\Hello();
echo $hello->hello(), PHP_EOL;
$ # プログラムの実行
$ php hello-world.php
Hello World!
$ composer config repositories.[ID] vcs https://qithub.com/[foo]/[bar]
$ # 検証バージョン
$ composer --version
Composer version 1.9.0 2019-08-02 20:55:32
$ # 作業ディレクトリの作成と移動
$ mkdir hello-world && cd $_
$ # composer の動作確認
$ composer diagnose
...
$ # パッケージの初期化
$ composer init --quiet --name sample/hello-world --require rivsen/hello-world:dev-master
$ # 依存パッケージのインストール
$ composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing rivsen/hello-world (dev-master 82d892b): Cloning 82d892b200 from cache
Writing lock file
Generating autoload files
$ # ディレクトリ構造の確認
$ tree
.
├── composer.json
├── composer.lock
└── vendor
├── autoload.php
├── composer
│   ├── ClassLoader.php
│   ├── LICENSE
│   ├── autoload_classmap.php
│   ├── autoload_namespaces.php
│   ├── autoload_psr4.php
│   ├── autoload_real.php
│   ├── autoload_static.php
│   └── installed.json
└── rivsen
└── hello-world
├── composer.json
├── readme.md
├── src
│   └── Hello.php
└── test.php
5 directories, 15 files
$ # プログラムのファイルを作成
$ touch hello-world.php
$ # プログラムを記載(好きなエディタで。以下は vim )
$ vi hello-world.php
...
$ # プログラムの内容
$ cat hello-world.php
<?php
require_once "vendor/autoload.php";
$hello = new Rivsen\Demo\Hello();
echo $hello->hello(), PHP_EOL;
$ # プログラムの実行
$ php hello-world.php
Hello World!
$ composer config --unset [setting-key]
$ composer prohibits [vendor]/[package]
$ composer config sort-packages true
$ # 検証バージョン
$ composer --version
Composer version 1.9.0 2019-08-02 20:55:32
$ # 作業ディレクトリの作成と移動
$ mkdir hello-world && cd $_
$ # composer の動作確認
$ composer diagnose
...
$ # パッケージの初期化
$ composer init --quiet --name sample/hello-world --require rivsen/hello-world:dev-master
$ # 依存パッケージのインストール
$ composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing rivsen/hello-world (dev-master 82d892b): Cloning 82d892b200 from cache
Writing lock file
Generating autoload files
$ # ディレクトリ構造の確認
$ tree
.
├── composer.json
├── composer.lock
└── vendor
├── autoload.php
├── composer
│   ├── ClassLoader.php
│   ├── LICENSE
│   ├── autoload_classmap.php
│   ├── autoload_namespaces.php
│   ├── autoload_psr4.php
│   ├── autoload_real.php
│   ├── autoload_static.php
│   └── installed.json
└── rivsen
└── hello-world
├── composer.json
├── readme.md
├── src
│   └── Hello.php
└── test.php
5 directories, 15 files
$ # プログラムのファイルを作成
$ touch hello-world.php
$ # プログラムを記載(好きなエディタで。以下は vim )
$ vi hello-world.php
...
$ # プログラムの内容
$ cat hello-world.php
<?php
require_once "vendor/autoload.php";
$hello = new Rivsen\Demo\Hello();
echo $hello->hello(), PHP_EOL;
$ # プログラムの実行
$ php hello-world.php
Hello World!
$ compose diagnose
$ # 検証バージョン
$ composer --version
Composer version 1.9.0 2019-08-02 20:55:32
$ # 作業ディレクトリの作成と移動
$ mkdir hello-world && cd $_
$ # composer の動作確認
$ composer diagnose
...
$ # パッケージの初期化
$ composer init --quiet --name sample/hello-world --require rivsen/hello-world:dev-master
$ # 依存パッケージのインストール
$ composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing rivsen/hello-world (dev-master 82d892b): Cloning 82d892b200 from cache
Writing lock file
Generating autoload files
$ # ディレクトリ構造の確認
$ tree
.
├── composer.json
├── composer.lock
└── vendor
├── autoload.php
├── composer
│   ├── ClassLoader.php
│   ├── LICENSE
│   ├── autoload_classmap.php
│   ├── autoload_namespaces.php
│   ├── autoload_psr4.php
│   ├── autoload_real.php
│   ├── autoload_static.php
│   └── installed.json
└── rivsen
└── hello-world
├── composer.json
├── readme.md
├── src
│   └── Hello.php
└── test.php
5 directories, 15 files
$ # プログラムのファイルを作成
$ touch hello-world.php
$ # プログラムを記載(好きなエディタで。以下は vim )
$ vi hello-world.php
...
$ # プログラムの内容
$ cat hello-world.php
<?php
require_once "vendor/autoload.php";
$hello = new Rivsen\Demo\Hello();
echo $hello->hello(), PHP_EOL;
$ # プログラムの実行
$ php hello-world.php
Hello World!
$ compose diagnose
$ composer status
$ composer validate
$ # 検証バージョン
$ composer --version
Composer version 1.9.0 2019-08-02 20:55:32
$ # 作業ディレクトリの作成と移動
$ mkdir hello-world && cd $_
$ # composer の動作確認
$ composer diagnose
...
$ # パッケージの初期化
$ composer init --quiet --name sample/hello-world --require rivsen/hello-world:dev-master
$ # 依存パッケージのインストール
$ composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing rivsen/hello-world (dev-master 82d892b): Cloning 82d892b200 from cache
Writing lock file
Generating autoload files
$ # ディレクトリ構造の確認
$ tree
.
├── composer.json
├── composer.lock
└── vendor
├── autoload.php
├── composer
│   ├── ClassLoader.php
│   ├── LICENSE
│   ├── autoload_classmap.php
│   ├── autoload_namespaces.php
│   ├── autoload_psr4.php
│   ├── autoload_real.php
│   ├── autoload_static.php
│   └── installed.json
└── rivsen
└── hello-world
├── composer.json
├── readme.md
├── src
│   └── Hello.php
└── test.php
5 directories, 15 files
$ # プログラムのファイルを作成
$ touch hello-world.php
$ # プログラムを記載(好きなエディタで。以下は vim )
$ vi hello-world.php
...
$ # プログラムの内容
$ cat hello-world.php
<?php
require_once "vendor/autoload.php";
$hello = new Rivsen\Demo\Hello();
echo $hello->hello(), PHP_EOL;
$ # プログラムの実行
$ php hello-world.php
Hello World!
$ compose diagnose
$ # 検証バージョン
$ composer --version
Composer version 1.9.0 2019-08-02 20:55:32
$ # 作業ディレクトリの作成と移動
$ mkdir hello-world && cd $_
$ # composer の動作確認
$ composer diagnose
...
$ # パッケージの初期化
$ composer init --quiet --name sample/hello-world --require rivsen/hello-world:dev-master
$ # 依存パッケージのインストール
$ composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing rivsen/hello-world (dev-master 82d892b): Cloning 82d892b200 from cache
Writing lock file
Generating autoload files
$ # ディレクトリ構造の確認
$ tree
.
├── composer.json
├── composer.lock
└── vendor
├── autoload.php
├── composer
│   ├── ClassLoader.php
│   ├── LICENSE
│   ├── autoload_classmap.php
│   ├── autoload_namespaces.php
│   ├── autoload_psr4.php
│   ├── autoload_real.php
│   ├── autoload_static.php
│   └── installed.json
└── rivsen
└── hello-world
├── composer.json
├── readme.md
├── src
│   └── Hello.php
└── test.php
5 directories, 15 files
$ # プログラムのファイルを作成
$ touch hello-world.php
$ # プログラムを記載(好きなエディタで。以下は vim )
$ vi hello-world.php
...
$ # プログラムの内容
$ cat hello-world.php
<?php
require_once "vendor/autoload.php";
$hello = new Rivsen\Demo\Hello();
echo $hello->hello(), PHP_EOL;
$ # プログラムの実行
$ php hello-world.php
Hello World!
$ compose diagnose
$ # 検証バージョン
$ composer --version
Composer version 1.9.0 2019-08-02 20:55:32
$ # 作業ディレクトリの作成と移動
$ mkdir hello-world && cd $_
$ # composer の動作確認
$ composer diagnose
...
$ # パッケージの初期化
$ composer init --quiet --name sample/hello-world --require rivsen/hello-world:dev-master
$ # 依存パッケージのインストール
$ composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing rivsen/hello-world (dev-master 82d892b): Cloning 82d892b200 from cache
Writing lock file
Generating autoload files
$ # ディレクトリ構造の確認
$ tree
.
├── composer.json
├── composer.lock
└── vendor
├── autoload.php
├── composer
│   ├── ClassLoader.php
│   ├── LICENSE
│   ├── autoload_classmap.php
│   ├── autoload_namespaces.php
│   ├── autoload_psr4.php
│   ├── autoload_real.php
│   ├── autoload_static.php
│   └── installed.json
└── rivsen
└── hello-world
├── composer.json
├── readme.md
├── src
│   └── Hello.php
└── test.php
5 directories, 15 files
$ # プログラムのファイルを作成
$ touch hello-world.php
$ # プログラムを記載(好きなエディタで。以下は vim )
$ vi hello-world.php
...
$ # プログラムの内容
$ cat hello-world.php
<?php
require_once "vendor/autoload.php";
$hello = new Rivsen\Demo\Hello();
echo $hello->hello(), PHP_EOL;
$ # プログラムの実行
$ php hello-world.php
Hello World!
$ composer init
$ compose diagnose
$ composer exec --list
$ composer validate
$ # 検証バージョン
$ composer --version
Composer version 1.9.0 2019-08-02 20:55:32
$ # 作業ディレクトリの作成と移動
$ mkdir hello-world && cd $_
$ # composer の動作確認
$ composer diagnose
...
$ # パッケージの初期化
$ composer init --quiet --name sample/hello-world --require rivsen/hello-world:dev-master
$ # 依存パッケージのインストール
$ composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing rivsen/hello-world (dev-master 82d892b): Cloning 82d892b200 from cache
Writing lock file
Generating autoload files
$ # ディレクトリ構造の確認
$ tree
.
├── composer.json
├── composer.lock
└── vendor
├── autoload.php
├── composer
│   ├── ClassLoader.php
│   ├── LICENSE
│   ├── autoload_classmap.php
│   ├── autoload_namespaces.php
│   ├── autoload_psr4.php
│   ├── autoload_real.php
│   ├── autoload_static.php
│   └── installed.json
└── rivsen
└── hello-world
├── composer.json
├── readme.md
├── src
│   └── Hello.php
└── test.php
5 directories, 15 files
$ # プログラムのファイルを作成
$ touch hello-world.php
$ # プログラムを記載(好きなエディタで。以下は vim )
$ vi hello-world.php
...
$ # プログラムの内容
$ cat hello-world.php
<?php
require_once "vendor/autoload.php";
$hello = new Rivsen\Demo\Hello();
echo $hello->hello(), PHP_EOL;
$ # プログラムの実行
$ php hello-world.php
Hello World!
$ compose diagnose
$ composer exec --list
$ composer validate
$ composer run-script [script name] [args]
$ composer help
$ composer exec [script name] [args]
$ composer show
$ composer search [package]
$ composer show -i
$ composer show --installed
$ composer config --list
$ composer help [command]
$ composer config --list
$ composer init --require [vendor/package1] [vendor/package2]
FROM php:cli-alpine
# Install composer
RUN \
EXPECTED_SIGNATURE="$(wget -q -O - https://composer.github.io/installer.sig)"; \
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"; \
ACTUAL_SIGNATURE="$(php -r "echo hash_file('sha384', 'composer-setup.php');")"; \
[ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ] && { >&2 echo 'ERROR: Invalid installer signature'; exit 1; }; \
php composer-setup.php --quiet --install-dir=/bin --filename=composer && \
composer --version && \
rm composer-setup.php
$ composer check-platform-reqs
$ composer check-platform-reqs
$ composer show [vendor]/*
$ composer global config bin-dir --absolute
Changed current directory to /root/.composer
/root/.composer/vendor/bin
$ composer show [vendor]/[package]
$ composer outdated
$ composer show -lo
$ composer global config bin-dir --absolute
Changed current directory to /root/.composer
/root/.composer/vendor/bin
$ composer home
$ composer global config bin-dir --absolute
Changed current directory to /root/.composer
/root/.composer/vendor/bin
$ composer browse
$ composer global config bin-dir --absolute
Changed current directory to /root/.composer
/root/.composer/vendor/bin
$ composer suggests
$ composer depends [vendor]/[package]
$ composer init
$ composer install
$ composer why [vendor]/[package]
$ composer global config bin-dir --absolute
Changed current directory to /root/.composer
/root/.composer/vendor/bin
$ composer depends [vendor]/[package]
$ composer global config bin-dir --absolute
Changed current directory to /root/.composer
/root/.composer/vendor/bin
$ composer why [vendor]/[package]
$ composer global config bin-dir --absolute
Changed current directory to /root/.composer
/root/.composer/vendor/bin
$ composer prohibits [vendor]/[package]
$ composer global config bin-dir --absolute
Changed current directory to /root/.composer
/root/.composer/vendor/bin
$ composer status
$ composer global config bin-dir --absolute
Changed current directory to /root/.composer
/root/.composer/vendor/bin
$ composer validate
$ composer global config bin-dir --absolute
Changed current directory to /root/.composer
/root/.composer/vendor/bin
$ composer status
$ composer global config bin-dir --absolute
Changed current directory to /root/.composer
/root/.composer/vendor/bin
$ composer licenses
$ composer exec --list
$ composer global config bin-dir --absolute
Changed current directory to /root/.composer
/root/.composer/vendor/bin
$ composer exec
$ composer global config bin-dir --absolute
Changed current directory to /root/.composer
/root/.composer/vendor/bin
<?php
/**
* @BeforeMethods({"init"})
*/
class HashSampleBench
{
public function init()
{
// ダミーデータの作成
$this->dummy = strval(\mt_rand());
}
public function benchHashMd5()
{
$val = hash('md5', $this->dummy);
}
public function benchHashSha256()
{
$val = hash('sha256', $this->dummy);
}
public function benchHashSha512()
{
$val = hash('sha512', $this->dummy);
}
}
$ composer config vendor-dir hoge
$ # 以下の要素が composer.json に追加されます
$ # "config": {
$ # "vendor-dir": "vendor_dev"
$ # }
$ COMPOSER_VENDOR_DIR=hoge composer install
$ composer licenses --format=json
"scripts" :{
"mytest": [
"php --version",
"composer --version",
"php vendor/squizlabs/php_codesniffer/scripts/phpcs",
"php vendor/phpunit/phpunit/phpunit"
]
}
composer global require "squizlabs/php_codesniffer=*"
{
"scripts": {
"test": [
"Composer\\Config::disableProcessTimeout",
"phpunit"
]
}
}
$ php ./composer.phar --help
$ ./composer.phar --help
$ composer archive [vendor]/[package] [version] --format=tar
$ composer require [vendor]/[package]:1.*
$ composer self-update 1.0.0-alpha7
$ composer require [vendor]/[package]:2.1
$ composer archive [vendor]/[package] [version] --format=zip
$ composer config bin-dir bin/
docker run --rm -it -v $(pwd):/app composer:1.4.2 /bin/bash
$ composer require ****/****
[RuntimeException]
No composer.json present in the current directory, this may be the cause of the following exception.
[InvalidArgumentException]
Could not find a version of package ****/**** matching your minimum-stability (stable). Require it with an explicit version constraint allowing its desired stability.
require [--dev] [--prefer-source] [--prefer-dist] [--fixed] [--no-progress] [--no-suggest] [--no-update] [--no-scripts] [--update-no-dev] [--update-with-dependencies] [--update-with-all-dependencies] [--ignore-platform-reqs] [--prefer-stable] [--prefer-lowest] [--sort-packages] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [--] [<packages>]...
$ composer global show -i
$ composer global show --installed
$ # 文法
$ # composer require [vendor]/[package]
$ # 使用例
$ composer require symfony/console
#!/bin/sh
EXPECTED_SIGNATURE="$(wget -q -O - https://composer.github.io/installer.sig)"
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
ACTUAL_SIGNATURE="$(php -r "echo hash_file('sha384', 'composer-setup.php');")"
if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ]
then
>&2 echo 'ERROR: Invalid installer signature'
rm composer-setup.php
exit 1
fi
php composer-setup.php --quiet --install-dir=/bin --filename=composer
RESULT=$?
rm composer-setup.php
exit $RESULT
$ composer search -N [package]
$ ./composer.phar --version
$ php ./composer.phar --version
$ php /path/to/downloaded/composer.phar --version
$ COMPOSER_BIN_DIR=fuga composer install
composer require phpbench/phpbench @dev --dev
# rivsen/hello-world を依存パッケージとして指定
composer init --quiet --name sample/hello-world --require rivsen/hello-world:dev-master
composer install
$ # composer require [vendor]/[package]
$ composer require keinos/project_x
<?php
require_once "vendor/autoload.php";
$hello = new Rivsen\Demo\Hello();
echo $hello->hello(), PHP_EOL;
$ composer search --only-name [package]
$ composer bench
> Composer\Config::disableProcessTimeout
> ./vendor/bin/phpbench run --retry-threshold=1 --revs=1000000 --iterations=10 --report=compare --report=aggregate ./bench/HashSampleBench.php
PhpBench @git_tag@. Running benchmarks.
\HashSampleBench
benchHashMd5............................R1 I1 [μ Mo]/r: 0.373 0.373 (μs) [μSD μRSD]/r: 0.002μs 0.42%
benchHashSha256.........................R2 I9 [μ Mo]/r: 0.676 0.675 (μs) [μSD μRSD]/r: 0.003μs 0.49%
benchHashSha512.........................R1 I0 [μ Mo]/r: 0.860 0.862 (μs) [μSD μRSD]/r: 0.004μs 0.41%
3 subjects, 30 iterations, 3,000,000 revs, 0 rejects, 0 failures, 0 warnings
(best [mean mode] worst) = 0.372 [0.636 0.637] 0.377 (μs)
⅀T: 19.092μs μSD/r 0.003μs μRSD/r: 0.439%
+-----------------+-----------------+-----+---------+-----------------------------------------------------+
| benchmark | subject | set | revs | suite:1343c44d5a2a719c55bde25711d577d5ecbe8468:mean |
+-----------------+-----------------+-----+---------+-----------------------------------------------------+
| HashSampleBench | benchHashMd5 | 0 | 1000000 | 0.373μs |
| HashSampleBench | benchHashSha256 | 0 | 1000000 | 0.676μs |
| HashSampleBench | benchHashSha512 | 0 | 1000000 | 0.860μs |
+-----------------+-----------------+-----+---------+-----------------------------------------------------+
suite: 1343c44d5a2a719c55bde25711d577d5ecbe8468, date: 2020-05-16, stime: 06:22:00
+-----------------+-----------------+-----+---------+-----+----------+---------+---------+---------+---------+---------+--------+-------+
| benchmark | subject | set | revs | its | mem_peak | best | mean | mode | worst | stdev | rstdev | diff |
+-----------------+-----------------+-----+---------+-----+----------+---------+---------+---------+---------+---------+--------+-------+
| HashSampleBench | benchHashMd5 | 0 | 1000000 | 10 | 420,768b | 0.372μs | 0.373μs | 0.373μs | 0.377μs | 0.002μs | 0.42% | 1.00x |
| HashSampleBench | benchHashSha256 | 0 | 1000000 | 10 | 420,768b | 0.672μs | 0.676μs | 0.675μs | 0.683μs | 0.003μs | 0.49% | 1.81x |
| HashSampleBench | benchHashSha512 | 0 | 1000000 | 10 | 420,768b | 0.854μs | 0.860μs | 0.862μs | 0.864μs | 0.004μs | 0.41% | 2.30x |
+-----------------+-----------------+-----+---------+-----+----------+---------+---------+---------+---------+---------+--------+-------+
docker run --rm -it --network host -v $(pwd):/app composer:1.4.2 /bin/bash
$ # global なし → ./vendor/ 下にインストールされます
$ composer require keinos/project_x
$ # global あり → ~/.composer/vendor/ 下にインストールされます
$ composer global require keinos/project_x
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment