Composer: Difference between revisions
m typo |
update the Commands quick-ref section |
||
| Line 74: | Line 74: | ||
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ | \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ | ||
/_/ | /_/ | ||
Composer version 2.8.4 2024-12-11 11:57:47 | |||
Composer version | |||
Usage: | Usage: | ||
| Line 81: | Line 80: | ||
Options: | Options: | ||
-h, --help Display | -h, --help Display help for the given command. When no command is given display help for the list command | ||
-q, --quiet Do not output any message | -q, --quiet Do not output any message | ||
-V, --version Display this application version | -V, --version Display this application version | ||
--ansi | --ansi|--no-ansi Force (or disable --no-ansi) ANSI output | ||
-n, --no-interaction Do not ask any interactive question | -n, --no-interaction Do not ask any interactive question | ||
--profile Display timing and memory usage information | --profile Display timing and memory usage information | ||
--no-plugins Whether to disable plugins. | --no-plugins Whether to disable plugins. | ||
--no-scripts Skips the execution of all scripts defined in composer.json file. | |||
-d, --working-dir=WORKING-DIR If specified, use the given directory as working directory. | -d, --working-dir=WORKING-DIR If specified, use the given directory as working directory. | ||
--no-cache Prevent use of the cache | |||
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug | -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug | ||
Available commands: | Available commands: | ||
about | about Shows a short information about Composer | ||
archive | archive Creates an archive of this composer package | ||
browse | audit Checks for security vulnerability advisories for installed packages | ||
clear-cache | browse [home] Opens the package's repository URL or homepage in your browser | ||
bump Increases the lower limit of your composer.json requirements to the currently installed versions | |||
config | check-platform-reqs Check that platform requirements are satisfied | ||
create-project | clear-cache [clearcache|cc] Clears composer's internal package cache | ||
depends | completion Dump the shell completion script | ||
diagnose | config Sets config options | ||
dump-autoload | create-project Creates new project from a package into given directory | ||
depends [why] Shows which packages cause the given package to be installed | |||
exec | diagnose Diagnoses the system to identify common errors | ||
global | dump-autoload [dumpautoload] Dumps the autoloader | ||
help | exec Executes a vendored binary/script | ||
fund Discover how to help fund the maintenance of your dependencies | |||
global Allows running commands in the global composer dir ($COMPOSER_HOME) | |||
init | help Display help for a command | ||
install | init Creates a basic composer.json file in current directory | ||
licenses | install [i] Installs the project dependencies from the composer.lock file if present, or falls back on the composer.json | ||
licenses Shows information about licenses of dependencies | |||
list | list List commands | ||
outdated | outdated Shows a list of installed packages that have updates available, including their latest version | ||
prohibits [why-not] Shows which packages prevent the given package from being installed | |||
prohibits | reinstall Uninstalls and reinstalls the given package names | ||
remove | remove [rm|uninstall] Removes a package from the require or require-dev | ||
require | require [r] Adds required packages to your composer.json and installs them | ||
run-script | run-script [run] Runs the scripts defined in composer.json | ||
search | search Searches for packages | ||
self-update | self-update [selfupdate] Updates composer.phar to the latest version | ||
show [info] Shows information about packages | |||
show | status Shows a list of locally modified packages | ||
status | suggests Shows package suggestions | ||
suggests | update [u|upgrade] Updates your dependencies to the latest version according to composer.json, and updates the composer.lock file | ||
validate Validates a composer.json and composer.lock | |||
update | </pre> | ||
validate | |||
== More == | == More == | ||
Revision as of 16:09, 16 January 2025
Intro[edit]
Composer is one of many Dependency managers. Composer makes it easier to distribute PHP code that relies on other code.
in MediaWiki[edit]
- mw:Composer is used in the MediaWiki engine to manage all core libraries and dependencies since version 1.25 (including composer-local.json)
cd $IP cp composer.local.json-sample composer.local.json composer update --no-dev --dry-run
- mw:Composer/For extensions on using Composer to manage extensions
- mw:Manual:composer.json best practices for how to add Composer support to your extensions (including extension.json and skin.json)
- Jeroen DeDauw wrote this blog post in 2014 that is probably still not only relevant, but also contains wisdom not addressed in other places (e.g. Extension developers should specify
"type": "mediawiki-extension"in their extension's composer.json so that Composer installs your package into the 'extensions' folder instead of the typical 'vendor' folder that is Composer's default.)
Use git checkouts[edit]
Say you installed Semantic Mediawiki with composer require and then when you went to your 'extensions' directory you were because it wasn't a git checkout. You can rectify that by redoing the command, but with the --prefer-source option. nb. You first have to move the existing directory out of the way: mv SemanticMediaWiki unused/ cd ../ composer require --update-no-dev --sort-packages --optimize-autoloader -vvv mediawiki/semantic-media-wiki "~2.4" --prefer-source But, it's still a bit different than you might expect, because Composer leaves you with a detached head owing to the specific version that it checks out (see composer.lock).
Dependency resolution completed in 0.002 seconds
- Installing mediawiki/semantic-media-wiki (2.4.3)
Executing command (CWD): git --version
Cloning 6661acdd8c8420a7e07c178aad47590d086c83d6
Executing command (CWD): git clone --no-checkout 'https://github.com/SemanticMediaWiki/SemanticMediaWiki.git' 'extensions/SemanticMediaWiki/' && cd 'extensions/SemanticMediaWiki/' && git remote add composer 'https://github.com/SemanticMediaWiki/SemanticMediaWiki.git' && git fetch composer
Executing command (extensions/SemanticMediaWiki/): git remote set-url --push origin 'git@github.com:SemanticMediaWiki/SemanticMediaWiki.git'
Executing command (extensions/SemanticMediaWiki/): git branch -r
Executing command (extensions/SemanticMediaWiki/): git checkout '2.4.3' --
Executing command (extensions/SemanticMediaWiki/): git reset --hard '6661acdd8c8420a7e07c178aad47590d086c83d6' --
REASON: Required by the root package: Install command rule (install mediawiki/semantic-media-wiki 2.4.3|install mediawiki/semantic-media-wiki 2.4.0|install mediawiki/semantic-media-wiki 2.4.1|install mediawiki/semantic-media-wiki 2.4.2|install mediawiki/semantic-media-wiki 2.4.3)
$ git branch
* (detached from 2.4.3)
master
$ git status
HEAD detached at 2.4.3
nothing to commit, working directory clean
Installation[edit]
Installing it on your own host would look something like this
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
echo 'export PATH="$HOME/.composer/vendor/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
# now you can use it to do things like install the latest version of Drush
composer global require drush/drush:dev-masterwhile installing it on a shared host like WebFaction would be slightly modified
ln -s `which php54` ~/bin/php
curl -sS https://getcomposer.org/installer | php54
mv composer.phar ~/bin/composer
echo -e '\n# Composer\nalias composer="php54 $HOME/composer.phar"' >> ~/.bash_profile
source ~/.bash_profile
which composer
# now you can use it to do things like install the latest version of Drush
composer global require drush/drush:dev-master
drush --version
Commands[edit]
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 2.8.4 2024-12-11 11:57:47
Usage:
command [options] [arguments]
Options:
-h, --help Display help for the given command. When no command is given display help for the list command
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi|--no-ansi Force (or disable --no-ansi) ANSI output
-n, --no-interaction Do not ask any interactive question
--profile Display timing and memory usage information
--no-plugins Whether to disable plugins.
--no-scripts Skips the execution of all scripts defined in composer.json file.
-d, --working-dir=WORKING-DIR If specified, use the given directory as working directory.
--no-cache Prevent use of the cache
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
Available commands:
about Shows a short information about Composer
archive Creates an archive of this composer package
audit Checks for security vulnerability advisories for installed packages
browse [home] Opens the package's repository URL or homepage in your browser
bump Increases the lower limit of your composer.json requirements to the currently installed versions
check-platform-reqs Check that platform requirements are satisfied
clear-cache [clearcache|cc] Clears composer's internal package cache
completion Dump the shell completion script
config Sets config options
create-project Creates new project from a package into given directory
depends [why] Shows which packages cause the given package to be installed
diagnose Diagnoses the system to identify common errors
dump-autoload [dumpautoload] Dumps the autoloader
exec Executes a vendored binary/script
fund Discover how to help fund the maintenance of your dependencies
global Allows running commands in the global composer dir ($COMPOSER_HOME)
help Display help for a command
init Creates a basic composer.json file in current directory
install [i] Installs the project dependencies from the composer.lock file if present, or falls back on the composer.json
licenses Shows information about licenses of dependencies
list List commands
outdated Shows a list of installed packages that have updates available, including their latest version
prohibits [why-not] Shows which packages prevent the given package from being installed
reinstall Uninstalls and reinstalls the given package names
remove [rm|uninstall] Removes a package from the require or require-dev
require [r] Adds required packages to your composer.json and installs them
run-script [run] Runs the scripts defined in composer.json
search Searches for packages
self-update [selfupdate] Updates composer.phar to the latest version
show [info] Shows information about packages
status Shows a list of locally modified packages
suggests Shows package suggestions
update [u|upgrade] Updates your dependencies to the latest version according to composer.json, and updates the composer.lock file
validate Validates a composer.json and composer.lock
More[edit]
To use Composer in your PHP project, see this primer, plus Matthieu Moquet's "5 Features About Composer", and also this handy-dandy cheatsheet (with mouseovers!)