Slide 1

Slide 1 text

Composer for WordPress Projects WordCamp SLC 2019

Slide 2

Slide 2 text

Tyrel Kelsey ninnypants

Slide 3

Slide 3 text

+

Slide 4

Slide 4 text

wp-content

Slide 5

Slide 5 text

~/sites/cwp(master*) » composer init Welcome to the Composer config generator This command will guide you through creating your composer.json config. Package name (/) [tyrelkelsey/cwp]: ninnypants/cwp Description []: WordPress + Composer example. Author [Tyrel Kelsey , n to skip]: Minimum Stability []: stable Package Type (e.g. library, project, metapackage, composer-plugin) []: project License []: GPL2 Define your dependencies. Would you like to define your dependencies (require) interactively [yes]? no Would you like to define your dev dependencies (require-dev) interactively [yes]? no

Slide 6

Slide 6 text

{ "name": "ninnypants/cwp", "description": "WordPress + Composer example.", "type": "project", "license": "GPL2", "authors": [ { "name": "Tyrel Kelsey", "email": "[email protected]" } ], "minimum-stability": "stable", "require": {} } Do you confirm generation [yes]? Would you like the vendor directory added to your .gitignore [yes]? yes

Slide 7

Slide 7 text

Plugins & Themes

Slide 8

Slide 8 text

wpackagist.org

Slide 9

Slide 9 text

"repositories":[ { "type":"composer", "url":"https://wpackagist.org" } ],

Slide 10

Slide 10 text

"require": { "wpackagist-plugin/formidable": ">=4.03", "wpackagist-plugin/wordpress-seo": ">=12.2" },

Slide 11

Slide 11 text

Installer Paths

Slide 12

Slide 12 text

'wp-content/plugins/{$name}/', 'theme' => 'wp-content/themes/{$name}/', 'muplugin' => 'wp-content/mu-plugins/{$name}/', 'dropin' => 'wp-content/{$name}/', ); }

Slide 13

Slide 13 text

"extra": { "installer-paths": { “plugins/{$name}":[ “type:wordpress-plugin" ], "mu-plugins/{$name}": [ “type:wordpress-muplugin" ], "themes/{$name}": [ “type:wordpress-theme" ] } }

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

External Repositories

Slide 16

Slide 16 text

"repositories":[ { "type":"composer", "url":"https://wpackagist.org" }, { "type": "vcs", "url": "[email protected]:ninnypants/cwp-theme.git", "no-api": true } ],

Slide 17

Slide 17 text

"require": { "wpackagist-plugin/formidable": ">=4.03", "wpackagist-plugin/wordpress-seo": ">=12.2", "ninnypants/cwp-theme": "dev-master" },

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

Premium Plugins

Slide 20

Slide 20 text

"require": { "wpackagist-plugin/formidable": ">=4.03", "wpackagist-plugin/wordpress-seo": ">=12.2", "ninnypants/cwp-theme": "dev-master", "strategy11/formidable-pro": "4.02.03" },

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

{ "name": "strategy11/formidable-pro", "type": "wordpress-plugin", "version": "4.02.03", "license": "GPLv3", "description": "", "require": { } }

Slide 23

Slide 23 text

"repositories":[ { "type":"composer", "url":"https://wpackagist.org" }, { "type": "vcs", "url": "[email protected]:ninnypants/cwp-theme.git", "no-api": true }, { "type": "artifact", "url": "artifacts/" } ],

Slide 24

Slide 24 text

"strategy11/formidable-pro": "4.02.03" strategy11-formidable-pro-4.02.03.zip

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

.gitignore

Slide 27

Slide 27 text

~/sites/cwp(master*) » git status On branch master Untracked files: (use "git add ..." to include in what will be committed) plugins/formidable-pro/ plugins/formidable/ plugins/wordpress-seo/ themes/cwp-theme/ nothing added to commit but untracked files present (use "git add" to track)

Slide 28

Slide 28 text

plugins/* !plugins/some-plugin themes/* !themes/some-theme

Slide 29

Slide 29 text

Scripting

Slide 30

Slide 30 text

"scripts": { "start": [ "@composer install", "cd mu-plugins && npm install && bower install && grunt", "cd themes/cwp-theme && npm install && grunt" ], "deploy": [ "@composer install --no-dev --optimize-autoloader", "cd mu-plugins && npm install && bower install && grunt", "cd themes/cwp-theme && npm install && grunt" ] }, "scripts-descriptions": { "start": "Initializes repo for development.", "deploy": "Prepares the repo for deployment. Installs with --no-dev and optimizes output etc." }

Slide 31

Slide 31 text

Links • https://github.com/ninnypants/composer-for-wordpress • https://github.com/ninnypants/cwp-theme • https://getcomposer.org/ • https://wpackagist.org/

Slide 32

Slide 32 text

Thanks!