Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min...
Transcript of Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min...
![Page 1: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/1.jpg)
Drupal & ComposerMatthew Grasmick & Jeff Geerling
![Page 2: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/2.jpg)
Speakers
Matthew Grasmick@grasmash
AcquianBLT maintainer10+ years of Drupal
Jeff Geerling@geerlingguy
AcquianDrupal VM maintainer
![Page 3: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/3.jpg)
Agenda
● Composer Overview ~40 min
● Hands-on exercises ~30 min
● Advanced Topics ~20 min
● Hands-on free-for-all ~30 min
Total ~2 hrs.
![Page 4: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/4.jpg)
What is Composer?
![Page 5: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/5.jpg)
Composer is a dependency management tool for PHP.
It allows you to install, update, and load the PHP libraries that your PHP application depends on.
![Page 6: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/6.jpg)
What does that mean?
![Page 7: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/7.jpg)
Let’s look at the type of problem Composer solves
![Page 8: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/8.jpg)
Say you have a Drupal 7 application.
It requires jCarousel.
A third party, external dependency.
You download the tarball, decompress, move it into place. Voila!
![Page 9: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/9.jpg)
Easy, right?
![Page 10: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/10.jpg)
Except when it isn’t.
![Page 11: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/11.jpg)
Versions matter.
Your hypothetical Drupal 7 site requires:
● Drupal Core, which requires jQuery 1.2.0.● jCarousel, which requires jQuery 1.3.0.
1.2.0 != 1.3.0
![Page 12: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/12.jpg)
Uh oh!
![Page 13: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/13.jpg)
What do you do?
In Drupal 7, we used
● Various contributed modules
● Hacky workarounds to load multiple versions of jQuery.
That worked for dealing with a single library incompatibility.
![Page 14: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/14.jpg)
Enter Drupal 8
![Page 15: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/15.jpg)
Drupal 8
In Drupal 8, we use lots of third-party, external dependencies, like
● Symfony
● Doctrine
● Twig
● Etc.
![Page 16: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/16.jpg)
This is good.
● We’re getting of the island and using libraries used by the rest of the PHP community!
● We’re using software that is Proudly Found Elsewhere (and tested / supported elsewhere)
● We’re not re-inventing the wheel!
![Page 17: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/17.jpg)
But it gets complicated fast.
![Page 18: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/18.jpg)
Say you have a Drupal 8 site that requires...
● Drupal Core, which requires ...○ Symfony components○ And dozens of other things○ Which in turn require more things
● CSV Serialization module, which requires League CSV
● Views Slideshow module, which requires ...○ jQuery Cycle, which requires jQuery
● Bootstrap theme, which requires jQuery.
● Guzzle (for a custom module), which requires PSR HTTP message.
● Drush, which requires ...○ Symfony Yaml○ And dozens of other things○ Which in turn require more things
![Page 19: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/19.jpg)
![Page 20: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/20.jpg)
Imagine resolving an incompatibility it that tree.
![Page 21: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/21.jpg)
![Page 22: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/22.jpg)
This is dependency hell.
![Page 23: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/23.jpg)
We need a dependency manager.
![Page 24: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/24.jpg)
This is not a novel need.
● Javascript:
○ NPM
○ Yarn
○ Bower
● Ruby
○ Bundler
● PHP
○ Composer!Dependency management is a fundamental part of software engineering.
![Page 25: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/25.jpg)
How does it work? Demo time.
![Page 26: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/26.jpg)
Install composer
1. Download Composer @ getcomposer.org/download
2. Execute command ...
$ php composer-setup.php --install-dir=bin --filename=composer
![Page 27: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/27.jpg)
Install composer $ brew install composer
If you are a Homebrew user on OSX, execute...
OSX Only!
![Page 28: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/28.jpg)
Create a new PHP project from scratch.
Not Drupal. Just a directory and an empty PHP file.
# Make a directory.$ mkdir my-new-project$ cd my-new-project
# Create an empty file.$ touch index.php
![Page 29: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/29.jpg)
directory tree
● my-new-project○ index.php
![Page 30: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/30.jpg)
Initialize Composer for the project
This creates composer.json.
$ composer init
![Page 31: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/31.jpg)
![Page 32: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/32.jpg)
directory tree
● my-new-project○ composer.json○ index.php
![Page 33: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/33.jpg)
What should our app do?
Log stuff. We want a PHP script that logs messages to a log file.
![Page 34: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/34.jpg)
![Page 35: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/35.jpg)
Let’s see if a PHP library already exists
That handles logging stuff. Like writing files, defining level (info, warning, error), timestamps, etc.
![Page 36: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/36.jpg)
Find a dependency
On packagist.org.
![Page 37: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/37.jpg)
Find a dependency
On packagist.org.
![Page 38: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/38.jpg)
![Page 39: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/39.jpg)
![Page 40: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/40.jpg)
![Page 41: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/41.jpg)
Require the package
This command discovers the library, determines correct version, and downloads it.
$ composer require monolog/monolog
![Page 42: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/42.jpg)
![Page 43: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/43.jpg)
Under the hood.
![Page 44: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/44.jpg)
Images from “Composer the right way,” Rafael Dohms
![Page 45: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/45.jpg)
Images from “Composer the right way,” Rafael Dohms
![Page 46: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/46.jpg)
Images from “Composer the right way,” Rafael Dohms
![Page 47: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/47.jpg)
Images from “Composer the right way,” Rafael Dohms
![Page 48: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/48.jpg)
Images from “Composer the right way,” Rafael Dohms
![Page 49: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/49.jpg)
Images from “Composer the right way,” Rafael Dohms
![Page 50: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/50.jpg)
directory-tree
● my-new-project○ composer.json○ composer.lock○ index.php○ vendor
■ monolog● monolog
○ Src■ autoload.php
![Page 51: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/51.jpg)
directory-tree
● my-new-project○ composer.json○ composer.lock○ index.php○ vendor
■ monolog● monolog
○ Src■ autoload.php
![Page 52: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/52.jpg)
directory-tree
● my-new-project○ composer.json○ composer.lock○ index.php○ vendor
■ monolog● monolog
○ Src■ autoload.php
![Page 53: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/53.jpg)
directory-tree
● my-new-project○ composer.json○ composer.lock○ index.php○ vendor
■ monolog● monolog
○ Src■ autoload.php
![Page 54: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/54.jpg)
directory-tree
● my-new-project○ composer.json○ composer.lock○ index.php○ vendor
■ monolog● monolog
○ Src■ autoload.php
![Page 55: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/55.jpg)
Let’s implement it.
![Page 56: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/56.jpg)
<?php
// Require Composer's autoloader.
require __DIR__ . "/vendor/autoload.php";
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
// Create a logger
$log = new Logger('my-log');
$log->pushHandler(new StreamHandler(__DIR__ . "/my.log", Logger::WARNING));
// Log a message!
$log->error('I did it!');
index.php
![Page 57: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/57.jpg)
<?php
// Require Composer's autoloader.
require __DIR__ . "/vendor/autoload.php";
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
// Create a logger
$log = new Logger('my-log');
$log->pushHandler(new StreamHandler(__DIR__ . "/my.log", Logger::WARNING));
// Log a message!
$log->error('I did it!');
index.php
![Page 58: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/58.jpg)
<?php
// Require Composer's autoloader.
require __DIR__ . "/vendor/autoload.php";
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
// Create a logger
$log = new Logger('my-log');
$log->pushHandler(new StreamHandler(__DIR__ . "/my.log", Logger::WARNING));
// Log a message!
$log->error('I did it!');
index.php
![Page 59: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/59.jpg)
<?php
// Require Composer's autoloader.
require __DIR__ . "/vendor/autoload.php";
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
// Create a logger
$log = new Logger('my-log');
$log->pushHandler(new StreamHandler(__DIR__ . "/my.log", Logger::WARNING));
// Log a message!
$log->error('I did it!');
index.php
![Page 60: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/60.jpg)
Execute it
# Execute the script.$ php -f index.php
![Page 61: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/61.jpg)
It works!
# Execute the script.$ php -f index.php
# Look in the log file.$ cat my.log[2018-03-25 12:05:00] my-log.ERROR: I did it! [] []
![Page 62: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/62.jpg)
Let’s add some dev tools.
![Page 63: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/63.jpg)
Like PHP Codesniffer.
We use it during development only to make sure our code is nicely formatted.We don’t need it to run our logger.
![Page 64: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/64.jpg)
Require a dev dependency.
$ composer require squizlabs/php_codesniffer --dev
Indicates this is a dev-only dependency
![Page 65: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/65.jpg)
● my-new-project○ composer.json○ composer.lock○ index.php○ vendor
■ bin● phpcs
■ monolog● monolog
○ src● autoload.php
■ squizlabs● php_codesniffer
New executables
In vendor/bin
![Page 66: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/66.jpg)
Execute the binary
$ ./vendor/bin/phpcs --standard=PSR2 index.php
Executes new phpcs binary
![Page 67: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/67.jpg)
The dev tool is part of the project repo.
If you clone the repo, you have phpcs. No need to install separately. Neat.
![Page 68: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/68.jpg)
Recap.
![Page 69: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/69.jpg)
We built a logging app from scratch.
$ mkdir my-new-project$ cd my-new-project$ touch index.php$ composer init$ composer require monolog/monolog# Wrote a few PHP lines.$ php -f index.php$ cat my.log$ composer require squizlabs/php_codesniffer --dev$ ./vendor/bin/phpcs --standard=PSR2 index.php
Created project
Added libraries
Added dev toolsRan the app
Sniffed code
In less than 10 commands.
![Page 70: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/70.jpg)
![Page 71: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/71.jpg)
Let’s look in more depth.
![Page 72: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/72.jpg)
Library consumer
![Page 73: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/73.jpg)
Packagist
Library consumer
![Page 74: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/74.jpg)
Packagist
Library
Library consumer
![Page 75: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/75.jpg)
{ "require": { "monolog/monolog": “^1.0” }}
![Page 76: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/76.jpg)
{ "require": { "monolog/monolog": “^1.0” }}
{ "name": ”monolog/monolog” ...}
![Page 77: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/77.jpg)
{ "require": { "monolog/monolog": “^1.0” }}
{ "name": ”monolog/monolog” ...}
composer.json
![Page 78: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/78.jpg)
{ "require": { "monolog/monolog": “^1.0” }}
{ "name": ”monolog/monolog” ...}
composer.json
composer.json
![Page 79: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/79.jpg)
composer.json schema
![Page 80: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/80.jpg)
metadata for consumers
{ "name": "grasmash/my-new-project", "description": "My nifty thingee.", "authors": [ { "name": "Matthew Grasmick" } ],}
composer init
![Page 81: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/81.jpg)
metadata for vendors
{ "name": "monolog/monolog", "description": "Sends your logs to files, sockets, inboxes, databases and various web services", "keywords": ["log", "logging", "psr-3"], "homepage": "http://github.com/Seldaek/monolog", "type": "library", "license": "MIT", "authors": [ { "name": "Jordi Boggiano" } ],}
![Page 82: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/82.jpg)
metadata for consumers
"name": "grasmash/my-new-project", "description": "My new project.",
![Page 83: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/83.jpg)
Everything is a package
![Page 84: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/84.jpg)
require
{ "name": "grasmash/my-new-project", "require": { "monolog/monolog": "^1.23.0", },
"require-dev": { "squizlabs/php_codesniffer": "^3.2.3", },}
composer require
![Page 85: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/85.jpg)
require
{ "name": "monolog/monolog", "description": "Sends your logs to files, sockets, inboxes, databases and various web services", "require": { "php": "^7.0", "psr/log": "^1.0.1" },}
![Page 86: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/86.jpg)
metadata for consumers
"name": "grasmash/my-new-project", "description": "My new project.",
![Page 87: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/87.jpg)
require-dev
{ "name": "grasmash/my-new-project", "require": { "monolog/monolog": "^1.23.0", },
"require-dev": { "squizlabs/php_codesniffer": "^3.2.3", },}
composer require --dev
![Page 88: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/88.jpg)
require-dev
{ "name": "monolog/monolog", "require-dev": { "phpunit/phpunit": "^5.7", "graylog2/gelf-php": "^1.4.2", "sentry/sentry": "^0.13", "jakub-onderka/php-parallel-lint": "^0.9",
... },}
![Page 89: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/89.jpg)
metadata for consumers
"name": "grasmash/my-new-project", "description": "My new project.",
![Page 90: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/90.jpg)
misc
{ "minimum-stability": "dev", "prefer-stable": true}
composer config prefer-stable true
![Page 91: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/91.jpg)
Lots more!
● repositories
● config
● autoload
● autoload-dev
● bin
● extra
Check out website @ https://getcomposer.org/doc/04-schema.md.
![Page 92: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/92.jpg)
Version best practices.
![Page 93: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/93.jpg)
Versions matter.
For each dependency, we typically want the latest version that won’t break our site.
![Page 94: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/94.jpg)
Version promiscuity
If we just get the latest version of everything, an upstream change will break something in our site.
![Page 95: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/95.jpg)
Version lock
If we just stick to the exact versions we use now, we get nonew features or bug fixes.
![Page 96: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/96.jpg)
How do we find a balance?
Between the two... Version promiscuity Version lock
![Page 97: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/97.jpg)
Version constraints.
![Page 98: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/98.jpg)
Version constraint
{
"require": { "monolog/monolog": "^1.23.0", },
}
![Page 99: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/99.jpg)
Version constraint
{
"require": { "monolog/monolog": "^1.23.0", },
}
![Page 100: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/100.jpg)
Semantic Versioning
![Page 101: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/101.jpg)
1major
2minor
3patch
![Page 102: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/102.jpg)
1major
2minor
3patch
Bug Fixes
![Page 103: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/103.jpg)
1major
2minor
3patch
Bug FixesNew Features
![Page 104: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/104.jpg)
1major
2minor
3patch
Bug FixesNew Features
API / BC Breaks
![Page 105: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/105.jpg)
Version constraint best practices
![Page 106: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/106.jpg)
Version constraint
{
"require": { "monolog/monolog": "^1.23.0", },
}
![Page 107: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/107.jpg)
Version constraint operators.
![Page 108: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/108.jpg)
caret, ^^1.2.3 is equivalent to >=1.2.3,<2.0.0.
Downloads latest minor or patch version above specified version. Allows last 2 digits to go up.
Preferred!
![Page 109: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/109.jpg)
tilde, ~~1.2.3 is equivalent to >=1.2.3 <1.3.0.
Specifies a minimum version, but allows the last digit specified to go up.
![Page 110: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/110.jpg)
range, >= x, <=>=1.0>=1.0,<=1.5<=1.5
Specify a range of valid versions and combine multiple ranges with AND and OR operands.
![Page 111: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/111.jpg)
asterisk, *1.0.* is equivalent to >=1.0,<1.1.
Specify a pattern with a * wildcard.
![Page 112: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/112.jpg)
exact version1.0.0 will download exactly 1.0.0.
![Page 113: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/113.jpg)
git branchdev-master uses the master branch.
Using the prefix dev- followed by a git branch name like master will checkout that branch.
![Page 114: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/114.jpg)
morehttps://getcomposer.org/doc/articles/versions.md
![Page 115: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/115.jpg)
Use the caret as your default.
![Page 116: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/116.jpg)
{ "require": { "monolog/monolog": “2.0” }}
Image from “Composer the right way,” Rafael Dohms
![Page 117: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/117.jpg)
{ "require": { "monolog/monolog": “2.0” }}
There is no monolog/monolog 2.0.
Image from “Composer the right way,” Rafael Dohms
![Page 118: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/118.jpg)
{ "require": { "monolog/monolog": “2.0” “^1.0” }}
Image from “Composer the right way,” Rafael Dohms
![Page 119: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/119.jpg)
{ "require": { "monolog/monolog": “2.0” “^1.0” }}
Take 1.23.0, on the house.
Image from “Composer the right way,” Rafael Dohms
![Page 120: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/120.jpg)
composer.lock
![Page 121: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/121.jpg)
Records which specific versions were actually installed.
![Page 122: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/122.jpg)
Image from “Composer the right way,” Rafael Dohms
{ "require": { "monolog/monolog": “^1.0” }}
![Page 123: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/123.jpg)
Image from “Composer the right way,” Rafael Dohms
{ "require": { "monolog/monolog": “^1.0” }}
![Page 124: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/124.jpg)
Image from “Composer the right way,” Rafael Dohms
{ "require": { "monolog/monolog": “^1.0” }}
Take 1.23.0, on the house.
![Page 125: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/125.jpg)
Image from “Composer the right way,” Rafael Dohms
{ "require": { "monolog/monolog": “^1.0” }}
Take 1.23.0, on the house.
![Page 126: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/126.jpg)
Image from “Composer the right way,” Rafael Dohms
{ "require": { "monolog/monolog": “^1.0” }}
Take 1.23.0, on the house.
![Page 127: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/127.jpg)
Image from “Composer the right way,” Rafael Dohms
{ "require": { "monolog/monolog": “^1.0” }}
Take 1.23.0, on the house.
"packages": [ { "name": "monolog/monolog", "version": "1.23.0", }]
![Page 128: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/128.jpg)
Image from “Composer the right way,” Rafael Dohms
{ "require": { "monolog/monolog": "^1.0" }}
Take 1.23.0, on the house.
"packages": [ { "name": "monolog/monolog", "version": "1.23.0", }]
![Page 129: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/129.jpg)
The existence of composer.lock
Fundamentally changes the behavior of composer install.
![Page 130: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/130.jpg)
Grok this.
![Page 131: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/131.jpg)
If composer.lock DOES NOT exist
composer install will:
● Discover all available dependency versions
● Determine which versions of packages should be installed.
● Create composer.lock
● Install the exact dependencies defined in composer.lock.
![Page 132: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/132.jpg)
If composer.lock DOES exist
composer install will:
● Discover all available dependency versions
● Determine which versions of packages should be installed.
● Create composer.lock
● Install the exact dependencies defined in composer.lock.
![Page 133: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/133.jpg)
Once you’re “locked in”
composer update will:
● Discover all available dependency versions
● Determine which versions of packages should be installed.
● Create update composer.lock
● Install the exact dependencies defined in composer.lock.
![Page 134: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/134.jpg)
To commit or not to commit?
![Page 135: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/135.jpg)
Commit composer.lock.But not vendor.
![Page 136: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/136.jpg)
Commit composer.lock, not vendor.
Composer has indicated that this is the best practice because it avoids the following problems:
● Large VCS repository size and diffs when you update code.
● Duplication of the history of all your dependencies in your own VCS.
● Adding dependencies installed via git to a git repo will show them as submodules.
https://getcomposer.org/doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md
![Page 137: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/137.jpg)
If you commit composer.lockand not vendor
Everyone gets the exact same dependencies.
But your repo is much lighter, and you avoid git submodule hell.
$ git clone [something] my-new-project$ cd my-new-project
# Populate vendor.$ composer install
![Page 138: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/138.jpg)
How do I get vendor on prod?
![Page 139: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/139.jpg)
This assumes you have scripted deployments
Like, a build server or CI server that can:
● Run composer install for you.
● Commit and push vendor to prod.
We’re going to get into this later in advanced topics.
![Page 140: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/140.jpg)
![Page 141: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/141.jpg)
Don’t worry, you can still commit vendor.
![Page 142: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/142.jpg)
Easy, documented alternative.
https://getcomposer.org/doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md
![Page 143: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/143.jpg)
Recap.
![Page 144: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/144.jpg)
What did we learn?
Composer concepts:
● dependency management
● composer files/dirs○ composer.json○ composer.lock○ vendor
■ bin
● packagist
● versions & constraints
● what to commit
Composer commands:
● init
● require
● install
● update
![Page 145: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/145.jpg)
That was vanilla Composer.
![Page 146: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/146.jpg)
![Page 147: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/147.jpg)
Drupal complicates things.
![Page 148: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/148.jpg)
Drupal considerations
● Drupal modules aren’t on Packagist
● Drupal doesn’t use Semantic Versioning. E.g., 8.x-2.0.
● Drupal doesn’t install modules, themes, etc in vendor.
Drupal core doesn’t fully support Composer out-of-the-box, hence the Composer Initiative.
But there are tools that address these issues.
![Page 149: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/149.jpg)
Composer template for Drupal projects
https://github.com/drupal-composer/drupal-project
![Page 150: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/150.jpg)
Use it as a template for a new project.
$ composer create-project drupal-composer/drupal-project:8.x-dev some-dir --stability dev --no-interaction
Inherit default composer.json, preconfigured.
![Page 151: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/151.jpg)
Preconfigured with what?
![Page 152: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/152.jpg)
Drupal.org as a package source
"repositories": [
{
"type": "composer",
"url": "https://packages.drupal.org/8 "
}
],
![Page 153: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/153.jpg)
Packagist
![Page 154: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/154.jpg)
Packagist
Drupal.org
![Page 155: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/155.jpg)
Correct project install locations
"require": {
"composer/installers": "^1.2"
},
"extra": {
"installer-paths": {
"web/core": ["type:drupal-core"],
"web/libraries/{$name}": ["type:drupal-library"],
"web/modules/contrib/{$name}": ["type:drupal-module"],
"web/profiles/contrib/{$name}": ["type:drupal-profile"],
"web/themes/contrib/{$name}": ["type:drupal-theme"],
"drush/contrib/{$name}": ["type:drupal-drush"]
}
}
● composer.json
● composer.lock
● vendor
● web○ core○ libraries○ modules/contrib○ profiles/contrib○ themes/contrib○ drush/contrib
![Page 156: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/156.jpg)
Required dependencies, like Drupal
"require": {
"drupal/core": "~8.5.1"
},
● composer.json
● composer.lock
● vendor
● web○ core○ libraries○ modules/contrib○ profiles/contrib○ themes/contrib○ drush/contrib
![Page 157: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/157.jpg)
Required dependencies, like Drupal
"require": {
"drupal/core": "~8.5.1"
},
● composer.json
● composer.lock
● vendor
● web○ core○ libraries○ modules/contrib○ profiles/contrib○ themes/contrib○ drush/contrib
![Page 158: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/158.jpg)
Drupal scaffold
"require": {
"drupal-composer/drupal-scaffold": "^2.2"
},
● composer.json
● composer.lock
● vendor
● web○ .htaccess○ core○ index.php○ libraries○ modules/contrib○ profiles/contrib○ robots.txt○ themes/contrib○ drush/contrib
![Page 159: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/159.jpg)
A prepopulated .gitignore
web/core
web/libraries
web/modules/contrib
web/profiles/contrib
web/themes/contrib
web/drush/contrib
vendor
![Page 160: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/160.jpg)
Patches
"require": {
"cweagans/composer-patches": "^1.6"
},
"extra": {
"patches": {
"drupal/core": {
"Clear Twig caches on deploys":
"https://www.drupal.org/files/issues/2752961-130.patch"
}
}
}
}
![Page 161: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/161.jpg)
Drupal community tools
"require": {
"drupal/console": "^1.0.2",
"drush/drush": "^9.0.0"
},
![Page 162: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/162.jpg)
Lots more.
![Page 163: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/163.jpg)
Common Drupal taskswith Composer
![Page 164: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/164.jpg)
Installing a module
Will be added to web/modules/contrib thanks to composer/installers config.
$ composer require drupal/token
![Page 165: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/165.jpg)
downloaded drupal/token 8.1.1.
![Page 166: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/166.jpg)
But Drupal doesn’t use semver?
![Page 167: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/167.jpg)
8.x-1.1
![Page 168: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/168.jpg)
8.x-1.1
![Page 169: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/169.jpg)
8.x-1.1.0
![Page 170: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/170.jpg)
8.x-1.1 => 1.1.0
![Page 171: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/171.jpg)
Drupal project versions
Drupal.org format Translated semver format
{core.x}-{major}.{minor}-{stability} {major}.{minor}.0-{stability}
8.x-3.4 3.4.0
8.x-2.10-rc2 2.10.0-rc2
8.x-1.0-alpha5 1.0.0-alpha5
7.x-1.x-dev 1.x-dev
![Page 172: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/172.jpg)
Updating core
Updates drupal core only.
$ composer update drupal/core
![Page 173: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/173.jpg)
Updating core
Updates drupal core and all the packages that it requires.
$ composer update drupal/core --with-all-dependencies
![Page 174: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/174.jpg)
Updating modules
Updates the token module and all the packages that it requires.
$ composer update drupal/token --with-all-dependencies
![Page 175: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/175.jpg)
Updating all the things
Updates everything (all modules, themes, core, and the packages they depend on) within bounds of version constraints.
$ composer update
![Page 176: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/176.jpg)
Now you try!
![Page 177: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/177.jpg)
Hands on tasks
● Install Composer
● Try Composer without Drupal○ Create project○ Require dependency○ Implement○ Test
● Try with drupal-project○ Create project○ require module○ Require something from packagist
![Page 178: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/178.jpg)
System Requirements
PHP 5.3.2+
For today’s workshop, please use an OSX or Linux OS.
Windows users, please consider using Drupal VM.
![Page 179: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/179.jpg)
bit.ly/2qcYQ7wgrasmash.github.io/drupal-composer-training
For hands-on guide.
We will be here to answer questions and assist.
30 minutes.
![Page 180: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/180.jpg)
Advanced topics.
![Page 181: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/181.jpg)
Deploying to hosting.
![Page 182: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/182.jpg)
Let’s generate a build artifact.
A what?
![Page 183: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/183.jpg)
Things you need for
development process
Things you need for
production website
!=
<>
![Page 184: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/184.jpg)
Development Artifact
![Page 185: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/185.jpg)
#navbar { width: 80%; border: solid red 1px; float: left; padding: 5px; ul { list-style-type: none; } li { float: right; a { font-weight: bold; color: red; } }}
Development (SASS)
#navbar { width: 80%; border: solid red 1px; float: left; padding: 5px;}
#navbar ul { list-style-type: none;}
#navbar ul li { float: right;}
#navbar ul li a { font-weight: bold; color: red;}
Artifact (CSS)
![Page 186: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/186.jpg)
.git/
.gitignore
.idea/
.travis.yml
.vagrant/README.mdVagrantfilecomposer.jsoncomposer.lockconfig/drush/custompatches/scripts/tests/web/modules/customweb/themes/custom
Development Artifact
![Page 187: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/187.jpg)
.git/
.gitignore
.idea/
.travis.yml
.vagrant/README.mdVagrantfilecomposer.jsoncomposer.lockconfig/drush/custompatches/scripts/tests/web/modules/customweb/themes/custom
Development.git/.gitignorecomposer.jsoncomposer.lockconfig/drush/scripts/web/modules/customweb/themes/custom
Artifact
![Page 188: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/188.jpg)
.git/
.gitignore
.idea/
.travis.yml
.vagrant/README.mdVagrantfilecomposer.jsoncomposer.lockconfig/drush/custompatches/scripts/tests/web/modules/customweb/themes/custom
Development.git/.gitignorecomposer.jsoncomposer.lockconfig/drush/customdrush/contribscripts/web/coreweb/librariesweb/modules/contribweb/modules/customweb/modules/contribweb/themes/customvendor/
Artifact
![Page 189: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/189.jpg)
How do we make an artifact?
![Page 190: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/190.jpg)
With a scriptThat turns the source code in your git repo’s branch into the artifact.
This is typically run by a build server or a CI server. But you can run it locally too.
![Page 191: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/191.jpg)
Simple example
![Page 192: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/192.jpg)
Create a build branch
$ git checkout -b master-build
create a dedicated branch for build artifacts
![Page 193: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/193.jpg)
Install production dependencies
$ composer install --no-dev --optimize-autoloader --prefer-dist
exclude require-dev dependencies
![Page 194: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/194.jpg)
Install production dependencies
$ composer install --no-dev --optimize-autoloader --prefer-dist
Improve autoloading performance. Up to 37% PHP performance boost!
![Page 195: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/195.jpg)
Install production dependencies
$ composer install --no-dev --optimize-autoloader --prefer-dist
avoid cloning .git repos to vendor
![Page 196: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/196.jpg)
Remove any git submodules
$ find 'vendor' -type d | grep '\.git' | xargs rm -rf$ find 'web' -type d | grep '\.git' | xargs rm -rf
![Page 197: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/197.jpg)
Force add .gitignored dirs with vendor files
$ git add -f 'web/core’$ git add -f 'web/modules/contrib’$ git add -f 'web/themes/contrib’$ git add -f 'web/profiles/contrib’$ git add -f 'web/libraries’$ git add -f ‘vendor’
![Page 198: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/198.jpg)
$ git commit -m "Prepping for 1.0.0 release."$ git push origin master-build
Commit and push upstream
![Page 199: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/199.jpg)
Troubleshooting Composer
![Page 200: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/200.jpg)
Dependency resolution is complicated
![Page 201: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/201.jpg)
Common issues
● Your platform (PHP version) is incompatible with your requirements
● Your application requires two packages that are incompatible with each other
● Your application requires a non-existent/invalid version of a package
● You execute a command that has too narrow a scope
![Page 202: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/202.jpg)
Common fixes
● Change your system's version of PHP, or set a minimum compatibility level
● Change the version constraint for one or more of your requirements
● Change the command that you're running so that more packages can be updated at once
![Page 203: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/203.jpg)
Common issues
● Your platform (PHP version) is incompatible with your requirements
● Your application requires two packages that are incompatible with each other
● Your application requires a non-existent/invalid version of a package
● You execute a command that has too narrow a scope
![Page 204: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/204.jpg)
Set PHP version
"config": { "platform": { "php": " 5.6" } },
![Page 205: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/205.jpg)
Incompatible package versions
Your composer.json requires two packages that are incompatible with each other.
"require": { "phpunit/phpunit": "^7.0.1", "phpunit/php-timer": "~1.0" }
![Page 206: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/206.jpg)
![Page 207: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/207.jpg)
The error output is confusing.Even for us.
![Page 208: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/208.jpg)
Common fixes
● Change your system's version of PHP
● Change the version constraint for one or more of your requirements
● Change the command that you're running so that more packages can be updated at once
![Page 209: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/209.jpg)
Package versions
"require": { "phpunit/phpunit": "^7.0.1", "phpunit/php-timer": " ^2.0" }
![Page 210: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/210.jpg)
Common fixes
● Change your system's version of PHP
● Change the version constraint for one or more of your requirements
● Change the command that you're running so that more packages can be updated at once
![Page 211: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/211.jpg)
Update granularity
● composer update [packages]
● composer update [packages] --with-all-dependencies
● composer update
![Page 212: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/212.jpg)
Thank you!
![Page 213: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/213.jpg)
Sprints are on Friday!
![Page 214: Drupal & Composer · Composer Overview ~40 min Hands-on exercises ~30 min Advanced Topics ~20 min Hands-on free-for-all ~30 min Total ~2 hrs. What is Composer? Composer is a dependency](https://reader036.fdocuments.us/reader036/viewer/2022062602/5ed8cc256714ca7f4768954a/html5/thumbnails/214.jpg)
Rate us.We want feedback, and we want to be invited back.