Managing your Drupal project with Composer

Download Managing your Drupal project with Composer

Post on 16-Jan-2017

45 views

Category:

Software

1 download

TRANSCRIPT

Managing Your Drupal Project with Composermatt glaman | @nmdmatt | mglaman

Matt GlamanSenior Drupal Consultant @ Commerce GuysCo-maintainer of Drupal CommerceAuthor of Drupal 8 Development Cookbookhttp://bit.ly/d8-dev-cookbook

DependencyManagementIt ain't new.

PIP

Dependency management is not a new concept.

NodeJS: npmFrontend JS/CSS: BowerRuby: Bundler/GemsPython: pipJava: MavenC#/.NET: nugetGo: theres like 10. https://github.com/golang/go/wiki/PackageManagementToolsObjectiveC: cocoapods

composerThe de facto dependency management tool for PHP

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.

composer.jsondefines metadata about the project and dependencies for the project

Package informationDependenciesDeveloper dependenciesAdditional metadata

composer.lockcomputed information about dependencies and expected install state

See Gemfile.lockContains installable package informationProvides a repeatable install across instances

composer installdownloads and installs dependencieswill install off of lock fileif no lock file, acts as update

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.

composer updateupdates defined dependenciesrebuilds the lock filegenerates autoloader

composer requireadds a new dependency, updates the JSON and .lock file.updates autoloader

composer removeremoves a dependency, updates the JSON and .lock fileupdates autoloader

New to DrupalDrupal never had dependency management. Drush kind of helped.Still a little rocky

Drush en -y panels_ipe thx Drush for downloading and enabling everything.Everything isnt worked out yet for working with Drupal and Composer

Installing Drupal

Install from packaged archiveDrupal.org has a packaging system which provides zip and tar archives. These archives come with all third party dependencies downloaded.

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

Adding dependencies to Drupal

Without Composer (or any tools.)

Wanted hunt and peck but this was more suitable.

With Composercomposer require drupal/panels

"require": { "drupal/panels": "3.0-beta4",}

Use Composer require command to add the dependencyYour composer.json should have the followingBUT WAIT. Theres currently a catch.

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

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

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" } },

Version constraints

~8.2.1: >=8.2.1 =8.2 =8.2.1