51
COMPOSER THERE'S A MODULE (OR LIBRARY) FOR THAT! Presented by and Rob Loach Larry Garfield

COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

  • Upload
    others

  • View
    24

  • Download
    0

Embed Size (px)

Citation preview

Page 1: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

COMPOSERTHERE'SAMODULE(ORLIBRARY)FORTHAT!

Presentedby andRobLoach LarryGarfield

Page 2: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

DEPENDENCYMANAGEMENTSUCKS

Page 3: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

PHPSUCKSATSHARINGHowdoIgeta3rdpartylibrary?HowdoIloaditscode?Doesitdependonanything?WheredoIputthefiles?

Page 4: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

SHARINGISHOWOPENSOURCEWORKS

SUCKINGATSHARINGISHOWOPENSOURCEDIES

Page 5: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

BUTWE'REDRUPAL!Drupal.org:Greatformodules,nothingelseDuplicateworkelsewhereCodeisnotreusable

Page 6: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

3RDPARTYCODEManuallydownloadintoyourmoduleandprayManuallydownloadinto/libraries/andprayManuallysetupextrahook

(...andpray)

Page 7: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

"DOITMANUALLYANDPRAY"ISFORLOSERS

WE'REBETTERTHANTHAT,RIGHT?

Page 8: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--
Page 9: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

ALITTLEHISTORY

Page 10: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

PEARPHPExtensionandApplicationRepositoryFounded2000onthe"new"PHP4Requiredroottouseproperly(WTF?)ComplexprocessforaddingpackagesEasytogetwrong

Page 11: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

SYMFONY2.0&PHPBBInitialalpha,SymfonyLiveParis,February2010PHPBB:We'rerebuildingonit!Symfony2uses3rdpartylibs(Doctrine,Monolog)

Page 12: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

DEPENDENCYHELL

Page 13: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

WENEEDADEPENDENCYSYSTEM!“It'sdumbtomakeitSymfonyspecific”

—JordiBoggiano

Page 14: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

APRIL2011NilsAderman(PHPBB):libzypp->PHP

JordiBoggiano(Monolog):Packagist,lesssuckyfront-endforPEAR

Page 15: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

WITHTHEIRPOWERSCOMBINED...ComposerisatoolfordependencymanagementinPHP.Itallowsyoutodeclarethedependentlibrariesyourprojectneedsanditwillinstalltheminyourprojectforyou.

Page 16: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

UHH,WHAT?NomoreCopy/PasteoflibrariesResolvesdependenciesEachprojectdefinesitsownrequirementsPerformsbuildtasksLikemodule.infofiles,butforanylibrary

Page 17: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

SEPTEMBER2011

1.2.3.4.5.6.

Packagist.orgMonologTwigPirumSwiftmailerPimpleSymfony

Page 18: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

—JordiBoggiano

“I'dsayuntilearly2012itwasprettyunusable,yetpeopleusedit.Iguessthat's

howbadlyitwasneeded.”

Page 19: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

PACKAGECOUNT

April2013:10,000packages(NotjustSymfony!)

Page 20: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--
Page 21: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

LIBRARIESSomeofthelibrariesavailableviaComposerinclude...

Page 22: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

SYMFONYPHPframeworkforwebapplications

http://symfony.com

Page 23: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

ZENDFRAMEWORK

PHPframeworkforwebapplicationshttp://framework.zend.com

Page 24: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

PHPUNIT

UnittestingsoftwareframeworkforPHPhttp://phpunit.de

Page 25: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

GUZZLEHTTPclient&frameworkforbuildingRESTfulwebservice

clientshttp://guzzlephp.org

Page 26: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

SOLARIUM

SolrclientlibraryforPHPhttp://solarium-project.org

Page 27: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

ELASTICAElasticsearchsearchengine/databaseforPHP

http://elastica.io

Page 28: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

MONOLOGLogtofiles,sockets,inboxes,databasesandvariousweb

serviceshttps://github.com/seldaek/monolog

Page 29: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

ASSETICJavaScript,stylesheet,andimageassetmanagement

http://github.com/kriswallsmith/assetic

Page 30: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--
Page 31: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--
Page 32: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

LET'SDOTHIS

Page 33: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

COMPOSER.JSONBasemanifestfileforyourproject

{"name":"crell/mypackage","description":"Thispackageprovidessomeawesomeness.","require":{"guzzle/guzzle":"3.4.*"},"autoload":{"psr-0":{"MyName\\MyPackage":"src/"}}}

Page 34: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

COMPOSERINSTALLInstallsalldependenciesforyourproject

$curl-sShttps://getcomposer.org/installer|phpAllsettingscorrectforusingComposerDownloading...

Composersuccessfullyinstalledto:composer.pharUseit:phpcomposer.phar$phpcomposer.pharinstall

Page 35: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

FILESYSTEM-rw-rw-r--composer.json(yourcomposerfile)-rw-rw-r--composer.lock(generated)drwxrwxr-xsrc/(yourcode)drwxrwxr-xvendor/(everyoneelse'scode)

Page 36: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

INDEX.PHPrequire_once__DIR__.'/vendor/autoload.php';

//Everyclassisnowyourstocommand!

//Autoloadondemand!Yourwork:zero.$client=newGuzzle\Http\Client('https://api.github.com');$request=$client->get('/user')->setAuth('user','pass');$response=$request->send();echo$response->getBody();

Page 37: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

COMPOSERUPDATEUpdatesallinstalleddependenciestothelatestversion$phpcomposer.pharupdateLoadingcomposerrepositorieswithpackageinformationUpdatingdependencies

Page 38: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

MORESCHEMAOPTIONSSchemaDocumentation

{"license":"MIT","require":{"php":">=5.3.10","guzzle/guzzle":"3.4.*"},"require-dev":{"phpunit/phpunit":"3.7.*"},"suggest":{"monolog/monolog":"Advancedloggingpackage"}}

Page 39: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

PRIVATEREPOSITORIESSatisallowsyoutohostyourownComposerrepositories{"repositories":[{"type":"composer","url":"http://packages.example.org/"}],"require":{"company/package":"1.2.0","company/package2":"1.5.2","company/package3":"dev-master"}}

github.com/composer/satis

Page 40: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--
Page 41: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

COMPOSERFORDRUPAL

Page 42: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

DRUSHCOMPOSERAllowsrunningComposercommandsthroughDrush

$drushdlcomposer-8.x$drushcomposer

drupal.org/project/composer

Page 43: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

COMPOSERAUTOLOADAutomaticallyloadsanygeneratedComposerfiles

-JimmyBerry drupal.org/project/composer_autoload

Page 44: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

COMPOSERMANAGERBuildsComposerfilesfrommodulecomposer.jsonfiles

-ChrisPliakas drupal.org/project/composer_manager

Page 45: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

DRUSHCOMPOSERMANAGERDownloadsandinstallsdependenciesforDrupalmodules$drushdlcomposer_managermonolog$drushencomposer_managermonolog$drushcomposer-managerLoadingcomposerrepositorieswithpackageinformationInstallingdependencies-Installingpsr/log(1.0.0)Downloading:100%

-Installingmonolog/monolog(1.5.0)Downloading:100%

drupal.org/project/composer_manager

Page 46: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

COMPOSERINSTALLERSFacilitatesinstallationofDrupalmodules/themes/profiles

github.com/composer/installers

Page 47: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

COMPOSERINSTALLERSAddacomposer.jsonfileinyourmodule/themedirectory

Addingthesetoeachmoduleiscumbersomethough,sothereis...

{"name":"dries/mymodule","type":"drupal-module","require":{"composer/installers":"*"}}

github.com/composer/installers

Page 48: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

DRUPALPACKAGISTIndexesDrupalthemes/modulesforinstallationusingSatis

-

Stillveryearly

{"repositories":[{"type":"composer","url":"http://drugist.espend.de"}],"require":{"drupal/views":"*"}}

Haehnchen github.com/haehnchen/drupal-packagist

Page 49: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--
Page 50: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

SPRINT:FRIDAYSprintwiththecommunityonFriday.Tasksforeveryskillset.

Mentorsareavailablefornewcontributors.OptionalFridaymorningworkshopwillhelpyousetup

communitytools.Drupaltag: Follow#composer @drupalmentoring

Page 51: COMPOSER - Drupal · Composer successfully installed to: composer.phar Use it: php composer.phar $ php composer.phar install. FILE SYSTEM-rw-rw-r-- composer.json (your composer file)-rw-rw-r--

THANKYOUEvaluatethissessionat:

portland2013.drupal.org/node/3468