Difference between revisions of "Composer"

From Freephile Wiki
Jump to navigation Jump to search
m (typo)
m (added Category:Tools using HotCat)
(10 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Intro ==
 
 
 
Composer is one of many [[Dependency managers]].  Composer makes it easier to distribute PHP code that relies on other code.
 
Composer is one of many [[Dependency managers]].  Composer makes it easier to distribute PHP code that relies on other code.
  
== in MediaWiki ==
 
<ol>
 
<li> [[mw:Composer]] is used in the MediaWiki engine to manage all core libraries and dependencies since version 1.25 (including composer-local.json)
 
<source lang="bash">
 
cd $IP
 
cp composer.local.json-sample composer.local.json
 
composer update --no-dev --dry-run
 
</source>
 
<li> [[mw:Composer/For extensions]] on using Composer to manage extensions
 
<li> [[mw:Manual:composer.json best practices]] for how to add Composer support to your extensions (including extension.json and skin.json)
 
<li> Jeroen DeDauw wrote [https://www.entropywins.wtf/blog/2013/11/24/introduction-to-composer-for-mediawiki-developers/ 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 <code>"type": "mediawiki-extension"</code> 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.)
 
</ol>
 
 
=== Use git checkouts ===
 
Say you installed Semantic Mediawiki with <code>composer require</code> and then when you went to your 'extensions' directory you were <i class="fa fa-frown-o"></i> because it wasn't a git checkout.  You can rectify that by redoing the command, but with the <code>--prefer-source</code> option.  nb. You first have to move the existing directory out of the way: <code>mv SemanticMediaWiki unused/</code> <code>cd ../ composer require --update-no-dev --sort-packages --optimize-autoloader -vvv mediawiki/semantic-media-wiki "~2.4" --prefer-source</code>  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).
 
<pre>
 
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
 
</pre>
 
 
== Installation ==
 
 
Installing it on your own host would look something like this
 
Installing it on your own host would look something like this
  
Line 64: Line 25:
 
drush --version
 
drush --version
 
</source>
 
</source>
 
 
== Commands ==
 
<pre>
 
  ______
 
  / ____/___  ____ ___  ____  ____  ________  _____
 
/ /  / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
 
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
 
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
 
                    /_/
 
</pre>
 
Composer version 1.2.2 2016-11-03 17:43:15
 
 
Usage:
 
  command [options] [arguments]
 
 
Options:
 
  -h, --help                    Display this help message
 
  -q, --quiet                    Do not output any message
 
  -V, --version                  Display this application version
 
      --ansi                    Force ANSI output
 
      --no-ansi                  Disable ANSI output
 
  -n, --no-interaction          Do not ask any interactive question
 
      --profile                  Display timing and memory usage information
 
      --no-plugins              Whether to disable plugins.
 
  -d, --working-dir=WORKING-DIR  If specified, use the given directory as working directory.
 
  -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          Short information about Composer
 
  archive        Create an archive of this composer package
 
  browse          Opens the package's repository URL or homepage in your browser.
 
  clear-cache    Clears composer's internal package cache.
 
  clearcache      Clears composer's internal package cache.
 
  config          Set config options
 
  create-project  Create new project from a package into given directory.
 
  depends        Shows which packages cause the given package to be installed
 
  diagnose        Diagnoses the system to identify common errors.
 
  dump-autoload  Dumps the autoloader
 
  dumpautoload    Dumps the autoloader
 
  exec            Execute a vendored binary/script
 
  global          Allows running commands in the global composer dir ($COMPOSER_HOME).
 
  help            Displays help for a command
 
  home            Opens the package's repository URL or homepage in your browser.
 
  info            Show information about packages
 
  init            Creates a basic composer.json file in current directory.
 
  install        Installs the project dependencies from the composer.lock file if present, or falls back on the composer.json.
 
  licenses        Show information about licenses of dependencies
 
  lint            Run the lint script as defined in composer.json.
 
  list            Lists commands
 
  outdated        Shows a list of installed packages that have updates available, including their latest version.
 
  phpcs          Run the phpcs script as defined in composer.json.
 
  prohibits      Shows which packages prevent the given package from being installed
 
  remove          Removes a package from the require or require-dev
 
  require        Adds required packages to your composer.json and installs them
 
  run-script      Run the scripts defined in composer.json.
 
  search          Search for packages
 
  self-update    Updates composer.phar to the latest version.
 
  selfupdate      Updates composer.phar to the latest version.
 
  show            Show information about packages
 
  status          Show a list of locally modified packages
 
  suggests        Show package suggestions
 
  test            Run the test script as defined in composer.json.
 
  update          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
 
  why            Shows which packages cause the given package to be installed
 
  why-not        Shows which packages prevent the given package from being installed
 
 
 
== More ==
 
 
To use [https://getcomposer.org/ Composer] in your PHP project, see this [http://daylerees.com/composer-primer primer], plus Matthieu Moquet's "''[https://moquet.net/blog/5-features-about-composer-php/ 5 Features About Composer]''", and also this handy-dandy [http://composer.json.jolicode.com/ cheatsheet] (with mouseovers!)
 
  
 
[[Category:Development]]
 
[[Category:Development]]
 
[[Category:Tools]]
 
[[Category:Tools]]
[[Category:PHP]]
 

Revision as of 14:40, 24 June 2015

Composer is one of many Dependency managers. Composer makes it easier to distribute PHP code that relies on other code.

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-master

while 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