Managing your Drupal project with Composer
Post on 16-Jan-2017
45 views
Embed Size (px)
TRANSCRIPT
<p>Managing Your Drupal Project with Composermatt glaman | @nmdmatt | mglaman</p>
<p>Matt GlamanSenior Drupal Consultant @ Commerce GuysCo-maintainer of Drupal CommerceAuthor of Drupal 8 Development Cookbookhttp://bit.ly/d8-dev-cookbook</p>
<p>DependencyManagementIt ain't new.</p>
<p>PIP</p>
<p>Dependency management is not a new concept.</p>
<p>NodeJS: npmFrontend JS/CSS: BowerRuby: Bundler/GemsPython: pipJava: MavenC#/.NET: nugetGo: theres like 10. https://github.com/golang/go/wiki/PackageManagementToolsObjectiveC: cocoapods</p>
<p>composerThe de facto dependency management tool for PHP</p>
<p>Inspired by npm and bundlerProvides a way to easily share and use librariesNot like PEAR - which installed to global includes directory and didnt use PSR standards for autoloading.</p>
<p>composer.jsondefines metadata about the project and dependencies for the project</p>
<p>Package informationDependenciesDeveloper dependenciesAdditional metadata</p>
<p>composer.lockcomputed information about dependencies and expected install state</p>
<p>See Gemfile.lockContains installable package informationProvides a repeatable install across instances</p>
<p>composer installdownloads and installs dependencieswill install off of lock fileif no lock file, acts as update</p>
<p>downloads and installs dependencies, builds the class autoloader. If a .lock file is available it will install based off of the metadata. Otherwise it will calculated and resolve the download information for dependencies.</p>
<p>composer updateupdates defined dependenciesrebuilds the lock filegenerates autoloader</p>
<p>composer requireadds a new dependency, updates the JSON and .lock file.updates autoloader</p>
<p>composer removeremoves a dependency, updates the JSON and .lock fileupdates autoloader</p>
<p>New to DrupalDrupal never had dependency management. Drush kind of helped.Still a little rocky</p>
<p>Drush en -y panels_ipe thx Drush for downloading and enabling everything.Everything isnt worked out yet for working with Drupal and Composer</p>
<p>Installing Drupal</p>
<p>Install from packaged archiveDrupal.org has a packaging system which provides zip and tar archives. These archives come with all third party dependencies downloaded.</p>
<p>Install via Composer templatecomposer create-project drupal-composer/drupal-project:8.x-dev some-dir --stability dev --no-interactionCreates your project in some-dirContains vendor and web directoryFollows current standard application structurehttps://github.com/drupal-composer/drupal-project</p>
<p>Adding dependencies to Drupal</p>
<p>Without Composer (or any tools.)</p>
<p>Wanted hunt and peck but this was more suitable.</p>
<p>With Composercomposer require drupal/panels</p>
<p>"require": { "drupal/panels": "3.0-beta4",}</p>
<p>Use Composer require command to add the dependencyYour composer.json should have the followingBUT WAIT. Theres currently a catch.</p>
<p>Drupal.org Composer Faadehttps://packages.drupal.org/8Repository endpoints provide packagesDrupal.org provides a repository endpoint (beta)Allows Drupal.org projects to be installed via composerAllows Drupal.org projects to specify 3rd party librariesInitial community initative: https://github.com/drupal-composer</p>
<p>Matt Glaman () - How do we know what the packages are named and available on drupal.org?Matt Glaman () - but with Drupal.org ... it's hard to know what is available.Matt Glaman () - version naming</p>
<p>Adding the endpoint to composer.jsoncomposer config repositories.drupal composer https://packages.drupal.org/8Your composer.json will now have "repositories": { "drupal": { "type": "composer", "url": "https://packages.drupal.org/8" } },</p>
<p>Version constraints</p>
<p>~8.2.1: >=8.2.1 =8.2 =8.2.1 </p>