Composer with Magento2 Training
01 - Installing Magento2 with Composer (using composer create-project)
composer create-project --repository-url=https://repo.magento.com/ <project name>
<installation directory name> <version>
● --repository-url: This is important to be set as the magento packages are not hosted on the
offical packagist. https://repo.magento.com/ is the offical magento composer packages
repository
● <project name>: This would be either enterprise or community editions depending upon your
needs.
❍ magento/project-community-edition
❍ magento/project-enterprise-edition
● <installation directory name>: This will be the directory in which the project install will take
place. If a directory with the given name is not present then a directory will be created. If a
directory with the given name already exists make sure its empty orelse composer installation will
throw an error.
● <version>: This parameter only when you might be interested in a specific version of the magento.
When this parameter is not provided the latest stable version of the package is installed.
composer create-project --repository-url=https://repo.magento.com/
magento/project-enterprise-edition magento2ee 2.1.8
composer create-project --repository-url=https://repo.magento.com/
magento/project-community-edition magento2ce 2.1.8
02 - Validating Auth keys for Maganto2 CE and EE installation
curl -u [Public Key]:[Private Key] https://repo.magento.com/packages.json | grep
--color="auto" -m 1 -ho "magento\\\\/product-enterprise-edition" | head -1
03 - Handling Composer authentication for Modules
Global V/s Project Specific Authentication (auth.json)
auth.json for any composer based project should always be maintained at the project level so that
installation can happen smoothly when setting up a project.
.
├── app
├── auth.json (Maintain's the Authentication Details)
├── bin
├── composer.json
├── composer.lock
├── dev
├── Gruntfile.js.sample (Maintain's the build task details)
├── package.json.sample (Maintain's the NPM package details)
├── php.ini.sample (Maintain's any extra PHP setting)
├── nginx.conf.sample (Maintain's any extra Server setting)
├── index.php
├── lib
├── phpserver
├── pub
├── setup
├── var
└── vendor
{
"github-oauth": {
"github.com": "<github-token>"
},
"http-basic": {
"repo.magento.com": {
"username": "<public-key>",
"password": "<private-key>"
}
}
}
Adding a GitHub token:
composer config --auth github-oauth.github.com <github-token>
Adding Magento Username/Password for CE/EE setup
composer config --auth http-basic.repo.magento.com <public-key> <private-key>
For a development machine the credentials can be maintained at the global level as
well. --global|-g flag can be used to save/generate the auth.json details at the global
level.
composer config -g store-auths false
03 - Upgrading Magento Version
Upgrade process for Magento2 should always be in start for the local development
envirnoment and should be deployed upstream
Pre-Upgrade Checklist:
● Get the latest DB backup from the LIVE DB
● Read the release note of the latest version (Helps with troubleshooting)
Upgrade Checklist:
● Change the version number in composer.json file
composer require <product> <version> --no-update
Enterprise Edition:
composer require magento/product-enterprise-edition 2.0.13 --no-update
Community Edition:
composer require magento/product-community-edition 2.0.13 --no-update
● Run composer update with the --dry-run flag
composer update --dry-run
1/3:
http://packagist.org/p/provider-latest$f8ab41abcc30ebd32e890854b1c9ff8fc35ab14288b0
8907d273e0d33901bf69.json
2/3:
http://packagist.org/p/provider-2017-01$dc4b51e62c55b7376405eda54d2b462b241e974d5c0
859b65baea35b819f9c30.json
3/3:
http://packagist.org/p/provider-2016$fa7cd7c3362c529b9aa593a374ec5403379a40ea4dfc15
1ddf00761de867b52e.json
Finished: success: 3, skipped: 0, failure: 0, total: 3
Loading composer repositories with package information
Updating dependencies (including require-dev)
Finished: success: 0, skipped: 0, failure: 2, total: 2
Package operations: 1 install, 196 updates, 0 removals
- Updating magento/framework (100.1.2) to magento/framework (100.1.8)
- Updating magento/framework-foreign-key (100.1.1) to
magento/framework-foreign-key (100.1.3)
- Updating magento/framework-message-queue (100.1.1) to
magento/framework-message-queue (100.1.3)
- Updating magento/module-media-storage (100.1.1) to magento/module-media-storage
(100.1.2)
- Updating magento/module-config (100.1.1) to magento/module-config (100.1.5)
- Updating magento/module-backend (100.1.1) to magento/module-backend (100.1.3)
- Updating magento/module-store (100.1.2) to magento/module-store (100.1.6)
- Updating magento/module-user (100.1.1) to magento/module-user (100.1.3)
- Updating magento/module-variable (100.1.1) to magento/module-variable (100.1.2)
- Updating magento/module-ui (100.1.1) to magento/module-ui (100.1.6)
- Updating magento/module-email (100.1.1) to magento/module-email (100.1.4)
- Updating magento/module-require-js (100.1.2) to magento/module-require-js
(100.1.3)
- Updating magento/module-translation (100.1.1) to magento/module-translation
(100.1.3)
- Updating magento/module-directory (100.1.1) to magento/module-directory
(100.1.4)
- Updating magento/module-theme (100.1.2) to magento/module-theme (100.1.6)
- Updating magento/module-authorization (100.1.1) to magento/module-authorization
(100.1.2)
- Updating magento/module-eav (100.1.2) to magento/module-eav (100.1.6)
- Updating magento/module-catalog (101.0.2) to magento/module-catalog (101.0.8)
- Updating magento/module-quote (100.1.2) to magento/module-quote (100.1.5)
- Updating magento/module-catalog-inventory (100.1.2) to
magento/module-catalog-inventory (100.1.6)
- Updating magento/module-page-cache (100.1.1) to magento/module-page-cache
(100.1.3)
- Updating magento/module-url-rewrite (100.1.1) to magento/module-url-rewrite
(100.1.3)
- Updating magento/module-cms-url-rewrite (100.1.1) to
magento/module-cms-url-rewrite (100.1.2)
- Updating magento/module-cms (101.0.2) to magento/module-cms (101.0.6)
- Updating magento/module-catalog-url-rewrite (100.1.1) to
magento/module-catalog-url-rewrite (100.1.4)
- Updating magento/module-import-export (100.1.1) to magento/module-import-export
(100.1.4)
- Updating magento/module-security (100.1.1) to magento/module-security (100.1.3)
- Updating magento/module-customer (100.1.2) to magento/module-customer (100.1.7)
- Updating magento/module-integration (100.1.1) to magento/module-integration
(100.1.4)
- Updating magento/module-tax (100.1.1) to magento/module-tax (100.1.3)
- Updating magento/module-widget (100.1.1) to magento/module-widget (100.1.4)
- Updating magento/module-sales-rule (100.1.1) to magento/module-sales-rule
(100.1.4)
- Updating magento/module-reports (100.1.1) to magento/module-reports (100.1.4)
- Updating magento/module-catalog-rule (100.1.2) to magento/module-catalog-rule
(100.1.4)
- Updating magento/module-grouped-product (100.1.2) to
magento/module-grouped-product (100.1.4)
- Updating magento/module-msrp (100.1.1) to magento/module-msrp (100.1.3)
- Updating magento/module-rule (100.1.1) to magento/module-rule (100.1.5)
- Updating magento/module-wishlist (100.1.2) to magento/module-wishlist (100.1.5)
- Updating magento/module-shipping (100.1.1) to magento/module-shipping (100.1.3)
- Updating magento/module-checkout (100.1.2) to magento/module-checkout (100.1.7)
- Updating magento/module-payment (100.1.2) to magento/module-payment (100.1.6)
- Updating magento/module-sales (100.1.2) to magento/module-sales (100.1.7)
- Updating magento/module-gift-message (100.1.1) to magento/module-gift-message
(100.1.4)
- Updating magento/module-sales-sequence (100.1.1) to
magento/module-sales-sequence (100.1.3)
- Updating magento/module-rss (100.1.1) to magento/module-rss (100.1.2)
- Updating magento/module-contact (100.1.1) to magento/module-contact (100.1.3)
- Updating magento/module-downloadable (100.1.1) to magento/module-downloadable
(100.1.2)
- Updating magento/module-cron (100.1.1) to magento/module-cron (100.1.3)
- Updating magento/module-newsletter (100.1.1) to magento/module-newsletter
(100.1.3)
- Updating magento/module-review (100.1.1) to magento/module-review (100.1.3)
- Updating magento/module-product-alert (100.1.1) to magento/module-product-alert
(100.1.3)
- Updating magento/module-indexer (100.1.2) to magento/module-indexer (100.1.3)
- Updating magento/module-catalog-import-export (100.1.1) to
magento/module-catalog-import-export (100.1.5)
- Updating magento/module-developer (100.1.1) to magento/module-developer
(100.1.3)
- Updating magento/module-backup (100.1.1) to magento/module-backup (100.1.2)
- Updating magento/module-search (100.1.1) to magento/module-search (100.1.3)
- Updating magento/module-catalog-search (100.1.2) to
magento/module-catalog-search (100.1.6)
- Updating magento/module-staging (100.1.2) to magento/module-staging (100.1.7)
- Updating magento/module-catalog-staging (100.1.2) to
magento/module-catalog-staging (100.1.8)
- Updating magento/module-product-video (100.1.2) to magento/module-product-video
(100.1.5)
- Updating magento/module-product-video-staging (100.1.1) to
magento/module-product-video-staging (100.1.2)
- Updating magento/module-weee-staging (100.1.1) to magento/module-weee-staging
(100.1.2)
- Updating magento/module-rma-staging (100.1.1) to magento/module-rma-staging
(100.1.2)
- Updating magento/module-review-staging (100.1.1) to
magento/module-review-staging (100.1.3)
- Updating magento/module-msrp-staging (100.1.1) to magento/module-msrp-staging
(100.1.2)
- Updating magento/module-google-optimizer-staging (100.1.1) to
magento/module-google-optimizer-staging (100.1.2)
- Updating magento/module-gift-wrapping-staging (100.1.1) to
magento/module-gift-wrapping-staging (100.1.2)
- Updating magento/module-gift-message-staging (100.1.1) to
magento/module-gift-message-staging (100.1.2)
- Updating magento/module-catalog-inventory-staging (100.1.1) to
magento/module-catalog-inventory-staging (100.1.4)
- Updating magento/module-layered-navigation (100.1.1) to
magento/module-layered-navigation (100.1.2)
- Updating magento/module-layered-navigation-staging (100.1.1) to
magento/module-layered-navigation-staging (100.1.2)
- Updating magento/module-search-staging (100.1.1) to
magento/module-search-staging (100.1.2)
- Updating magento/module-sales-rule-staging (100.1.2) to
magento/module-sales-rule-staging (100.1.6)
- Updating magento/module-catalog-rule-staging (100.1.2) to
magento/module-catalog-rule-staging (100.1.4)
- Updating magento/module-advanced-search (100.1.1) to
magento/module-advanced-search (100.1.2)
- Updating magento/module-elasticsearch (100.1.1) to magento/module-elasticsearch
(100.1.4)
- Updating magento/module-resource-connections (100.1.1) to
magento/module-resource-connections (100.1.2)
- Updating magento/module-website-restriction (100.1.1) to
magento/module-website-restriction (100.1.2)
- Updating magento/module-visual-merchandiser (100.1.1) to
magento/module-visual-merchandiser (100.1.5)
- Updating magento/module-versions-cms (100.1.1) to magento/module-versions-cms
(100.1.3)
- Updating magento/module-advanced-rule (100.1.1) to magento/module-advanced-rule
(100.1.2)
- Updating magento/module-customer-segment (100.1.1) to
magento/module-customer-segment (100.1.3)
- Updating magento/module-target-rule (100.1.2) to magento/module-target-rule
(100.1.6)
- Updating magento/module-scheduled-import-export (100.1.1) to
magento/module-scheduled-import-export (100.1.3)
- Updating magento/module-scalable-oms (100.1.1) to magento/module-scalable-oms
(100.1.3)
- Updating magento/module-scalable-inventory (100.1.1) to
magento/module-scalable-inventory (100.1.2)
- Updating magento/module-scalable-checkout (100.1.1) to
magento/module-scalable-checkout (100.1.3)
- Updating magento/module-advanced-sales-rule (100.1.1) to
magento/module-advanced-sales-rule (100.1.2)
- Updating magento/module-advanced-catalog (100.1.1) to
magento/module-advanced-catalog (100.1.3)
- Updating magento/module-sales-archive (100.1.1) to magento/module-sales-archive
(100.1.3)
- Updating magento/module-custom-attribute-management (100.1.1) to
magento/module-custom-attribute-management (100.1.2)
- Updating magento/module-customer-custom-attributes (100.1.1) to
magento/module-customer-custom-attributes (100.1.3)
- Updating magento/module-rma (100.1.1) to magento/module-rma (100.1.4)
- Updating magento/module-invitation (100.1.1) to magento/module-invitation
(100.1.2)
- Updating magento/module-reward (100.1.1) to magento/module-reward (100.1.2)
- Updating magento/module-reminder (100.1.1) to magento/module-reminder (100.1.2)
- Updating magento/module-banner (100.1.1) to magento/module-banner (100.1.3)
- Updating magento/module-promotion-permissions (100.1.1) to
magento/module-promotion-permissions (100.1.2)
- Updating magento/module-gift-card (101.0.2) to magento/module-gift-card
(101.0.5)
- Updating magento/module-bundle (100.1.1) to magento/module-bundle (100.1.3)
- Updating magento/module-price-permissions (100.1.1) to
magento/module-price-permissions (100.1.2)
- Updating magento/module-persistent (100.1.1) to magento/module-persistent
(100.1.3)
- Updating magento/module-persistent-history (100.1.1) to
magento/module-persistent-history (100.1.2)
- Updating magento/module-cybersource (100.1.1) to magento/module-cybersource
(100.1.3)
- Updating magento/module-advanced-checkout (100.1.2) to
magento/module-advanced-checkout (100.1.4)
- Updating magento/module-multiple-wishlist (100.1.1) to
magento/module-multiple-wishlist (100.1.2)
- Updating magento/module-logging (100.1.1) to magento/module-logging (100.1.3)
- Updating magento/module-gift-wrapping (100.1.1) to magento/module-gift-wrapping
(100.1.5)
- Updating magento/module-gift-registry (100.1.1) to magento/module-gift-registry
(100.1.2)
- Updating magento/module-gift-card-import-export (100.1.1) to
magento/module-gift-card-import-export (100.1.2)
- Updating magento/module-customer-balance (100.1.1) to
magento/module-customer-balance (100.1.2)
- Updating magento/module-gift-card-account (100.1.1) to
magento/module-gift-card-account (100.1.3)
- Updating magento/module-gift-card-staging (100.1.1) to
magento/module-gift-card-staging (100.1.3)
- Updating magento/module-catalog-permissions (100.1.1) to
magento/module-catalog-permissions (100.1.2)
- Updating magento/module-catalog-event (100.1.1) to magento/module-catalog-event
(100.1.2)
- Updating magento/module-enterprise (100.1.1) to magento/module-enterprise
(100.1.2)
- Updating magento/module-customer-import-export (100.1.1) to
magento/module-customer-import-export (100.1.3)
- Updating magento/module-customer-finance (100.1.1) to
magento/module-customer-finance (100.1.2)
- Updating magento/module-catalog-import-export-staging (100.1.1) to
magento/module-catalog-import-export-staging (100.1.2)
- Updating magento/module-banner-customer-segment (100.1.1) to
magento/module-banner-customer-segment (100.1.2)
- Updating magento/module-checkout-agreements (100.1.1) to
magento/module-checkout-agreements (100.1.2)
- Updating magento/module-admin-gws (100.1.1) to magento/module-admin-gws
(100.1.4)
- Updating magento/module-cookie (100.1.1) to magento/module-cookie (100.1.2)
- Updating magento/module-google-analytics (100.1.1) to
magento/module-google-analytics (100.1.2)
- Updating magento/module-google-tag-manager (100.1.1) to
magento/module-google-tag-manager (100.1.3)
- Updating magento/module-eway (100.1.1) to magento/module-eway (100.1.3)
- Updating magento/module-mysql-mq (100.1.1) to magento/module-mysql-mq (100.1.3)
- Updating magento/module-message-queue (100.1.1) to magento/module-message-queue
(100.1.3)
- Updating magento/module-solr (100.1.1) to magento/module-solr (100.1.3)
- Updating magento/module-support (100.1.1) to magento/module-support (100.1.4)
- Updating magento/module-payment-staging (100.1.1) to
magento/module-payment-staging (100.1.3)
- Updating magento/module-grouped-product-staging (100.1.1) to
magento/module-grouped-product-staging (100.1.3)
- Updating magento/module-downloadable-staging (100.1.1) to
magento/module-downloadable-staging (100.1.2)
- Updating magento/module-configurable-product (100.1.2) to
magento/module-configurable-product (100.1.8)
- Updating magento/module-configurable-product-staging (100.1.1) to
magento/module-configurable-product-staging (100.1.3)
- Updating magento/module-cms-staging (100.1.2) to magento/module-cms-staging
(100.1.5)
- Updating magento/module-checkout-staging (100.1.1) to
magento/module-checkout-staging (100.1.3)
- Updating magento/module-bundle-staging (100.1.1) to
magento/module-bundle-staging (100.1.3)
- Updating magento/module-catalog-url-rewrite-staging (100.1.1) to
magento/module-catalog-url-rewrite-staging (100.1.2)
- Updating magento/module-worldpay (100.1.1) to magento/module-worldpay (100.1.3)
- Updating magento/module-amqp (100.1.1) to magento/module-amqp (100.1.2)
- Updating magento/zendframework1 (1.12.16) to magento/zendframework1
(1.12.16-patch3)
- Updating colinmollenhour/php-redis-session-abstract (v1.1) to
colinmollenhour/php-redis-session-abstract (v1.2)
- Updating magento/language-zh_hans_cn (100.1.0) to magento/language-zh_hans_cn
(100.1.1)
- Updating magento/language-pt_br (100.1.0) to magento/language-pt_br (100.1.1)
- Updating magento/language-nl_nl (100.1.0) to magento/language-nl_nl (100.1.1)
- Updating magento/language-fr_fr (100.1.0) to magento/language-fr_fr (100.1.1)
- Updating magento/language-es_es (100.1.0) to magento/language-es_es (100.1.1)
- Updating magento/language-en_us (100.1.0) to magento/language-en_us (100.1.1)
- Updating magento/language-de_de (100.1.0) to magento/language-de_de (100.1.1)
- Updating magento/theme-frontend-blank (100.1.1) to magento/theme-frontend-blank
(100.1.6)
- Updating magento/theme-frontend-luma (100.1.1) to magento/theme-frontend-luma
(100.1.7)
- Updating magento/theme-adminhtml-backend (100.1.1) to
magento/theme-adminhtml-backend (100.1.2)
- Updating magento/module-weee (100.1.1) to magento/module-weee (100.1.2)
- Updating magento/module-webapi (100.1.1) to magento/module-webapi (100.1.4)
- Updating magento/module-webapi-security (100.1.1) to
magento/module-webapi-security (100.1.2)
- Updating magento/module-version (100.1.1) to magento/module-version (100.1.2)
- Updating magento/module-vault (100.1.1) to magento/module-vault (100.2.2)
- Updating magento/module-usps (100.1.1) to magento/module-usps (100.1.3)
- Updating magento/module-ups (100.1.1) to magento/module-ups (100.1.4)
- Updating magento/module-tax-import-export (100.1.1) to
magento/module-tax-import-export (100.1.2)
- Updating magento/module-swatches-layered-navigation (100.1.1) to
magento/module-swatches-layered-navigation (100.1.2)
- Updating magento/module-swatches (100.1.1) to magento/module-swatches (100.1.7)
- Updating magento/module-swagger (100.1.1) to magento/module-swagger (100.1.2)
- Updating magento/module-sitemap (100.1.1) to magento/module-sitemap (100.1.4)
- Updating magento/module-send-friend (100.1.1) to magento/module-send-friend
(100.1.2)
- Updating magento/module-sample-data (100.1.1) to magento/module-sample-data
(100.1.3)
- Installing magento/module-sales-inventory (100.1.1)
- Updating magento/module-paypal (100.1.1) to magento/module-paypal (100.1.6)
- Updating magento/module-offline-shipping (100.1.1) to
magento/module-offline-shipping (100.1.3)
- Updating magento/module-offline-payments (100.1.1) to
magento/module-offline-payments (100.1.2)
- Updating magento/module-new-relic-reporting (100.1.1) to
magento/module-new-relic-reporting (100.1.3)
- Updating magento/module-multishipping (100.1.1) to magento/module-multishipping
(100.1.2)
- Updating magento/module-grouped-import-export (100.1.1) to
magento/module-grouped-import-export (100.1.2)
- Updating magento/module-google-optimizer (100.1.1) to
magento/module-google-optimizer (100.1.2)
- Updating magento/module-google-adwords (100.1.1) to
magento/module-google-adwords (100.1.2)
- Updating magento/module-fedex (100.1.1) to magento/module-fedex (100.1.3)
- Updating magento/module-encryption-key (100.1.1) to
magento/module-encryption-key (100.1.2)
- Updating magento/module-downloadable-import-export (100.1.1) to
magento/module-downloadable-import-export (100.1.2)
- Updating magento/module-dhl (100.1.1) to magento/module-dhl (100.1.3)
- Updating magento/module-deploy (100.1.2) to magento/module-deploy (100.1.5)
- Updating magento/module-currency-symbol (100.1.1) to
magento/module-currency-symbol (100.1.2)
- Updating magento/module-configurable-import-export (100.1.1) to
magento/module-configurable-import-export (100.1.3)
- Updating magento/module-catalog-widget (100.1.1) to
magento/module-catalog-widget (100.1.3)
- Updating magento/module-catalog-rule-configurable (100.1.2) to
magento/module-catalog-rule-configurable (100.1.3)
- Updating magento/module-captcha (100.1.1) to magento/module-captcha (100.1.3)
- Updating magento/module-cache-invalidate (100.1.1) to
magento/module-cache-invalidate (100.1.3)
- Updating magento/module-bundle-import-export (100.1.1) to
magento/module-bundle-import-export (100.1.3)
- Updating magento/module-braintree (100.1.2) to magento/module-braintree
(100.1.6)
- Updating magento/module-authorizenet (100.1.2) to magento/module-authorizenet
(100.1.5)
- Updating magento/module-advanced-pricing-import-export (100.1.1) to
magento/module-advanced-pricing-import-export (100.1.3)
- Updating magento/module-admin-notification (100.1.1) to
magento/module-admin-notification (100.1.2)
- Updating magento/module-marketplace (100.1.1) to magento/module-marketplace
(100.1.2)
- Updating magento/magento2-base (2.1.2) to magento/magento2-base (2.1.8)
- Updating magento/product-community-edition (2.1.2) to
magento/product-community-edition (2.1.8)
- Updating magento/magento2-ee-base (2.1.2) to magento/magento2-ee-base (2.1.8)
- Updating magento/product-enterprise-edition (2.1.2) to
magento/product-enterprise-edition (2.1.8)
Package fabpot/php-cs-fixer is abandoned, you should avoid using it. Use
friendsofphp/php-cs-fixer instead.
● Gather the information of the modules which will be effected by this update
● Run composer update
● Clear out the magento cache and related folders:
rm -rf ./var/cache/* ./var/page_cache/* ./var/view_preprocessed/*
./var/generation/*
● If any external cache system's like **REDIS- or **Varnish- have been implemented then
cache:clean and cache:flush commands also needs to be executed:
php bin/magento cache:clean
php bin/magento cache:flush
├── cache
├── composer_home
├── generation
├── log
├── import
├── page_cache
├── tmp
└── view_preprocessed
● Run the Upgrade script
php bin/magento setup:upgrade
● Run DI Compile
php bin/magento setup:di:compile
● Execute Static Content Deploy
rm -rf pub/static/*
php bin/magento setup:static-content:deploy
● Run Full Indexing (if possible):
php bin/magento indexer:reindex
Post-Upgrade Checklist:
● Check for all overwrites using <preference/>
● Check for theme level template overwrites for *.phtml *.html
● Check for deprecated methods
● Regenerate the Varnish .vcl files and re-configure Varnish
● Make sure the latest changes in nginx.conf.sample or .htaccess.sample are merged with current
webserver configuration (NGINX or HTTPD or APACHE)
● Full text search feeds needs to be reindexed (Elasticsearch or Solr).
04 - Installing Magento2 modules with Composer
Packgist Modules:
Make sure that the packages are available on the Packgist website search
composer require <package_name>
composer require staempfli/magento2-module-spreadsheet
GitHub Modules:
● If the Github repository no registered on the Packgist website then the repository needs to be
registered to the composer.json file
composer config repositories.<unique-repo-name> <vcs-type> <vcs-url-https-or-ssh>
composer config repositories.magesycho-magento2-custom-shipping git
https://github.com/MagePsycho/magento2-custom-shipping.git
● Following snippet gets added to the composer.json file.
{
...
"repositories": {
"magesycho-magento2-custom-shipping": {
"type": "git",
"url": "https://github.com/MagePsycho/magento2-custom-shipping.git"
}
}
}
● Finally composer require can be used to download the module
composer require magepsycho/magento2-custom-shipping
05 - Magento2 developer tools with composer require-dev
Sometimes the module we need is just for profiling or debugging purposes.
composer require msp/devtools --dev
07 - Deployment using composer and best pratices
● --no-dev flag should always be used in non development envirnoment setup
● composer install should be triggered on every deployment
● composer update **should never*- be trigger on any non development envirnoment
● --optimize-autoloader should be used to generate optimized autoloader files
composer install --verbose --prefer-dist --no-progress --no-interaction --no-dev
--optimize-autoloader
08 - Magento 2 Composer Modules:
Usage
In the component's composer.json, specify:
● type, type of Magento 2 component.
● extra/map, list of files to move and their paths relative to the Magento root directory.
● extra/chmod, list of permissions that should be set for files.Note:
❍ extra/map is required only if your component needs to be moved to a location other than
<Magento root>/vendor. Otherwise, omit this section.
❍ extra/chmod is required only if you need to set specific permissions for files.
Supported Components
The following list explains the use of type in composer.json.
Magento Module
"type": "magento2-module"
Installation location: Default vendor directory or as defined in extra/map
Example:
{
"name": "magento/module-core",
"description": "N/A",
"require": {
...
},
"type": "magento2-module",
"extra": {
"map": [
[
"*",
"Magento/Core"
]
]
}
}
Final location is <magento root>/app/code/Magento/Core
Magento Theme
"type": "magento2-theme"
Installation location: app/design
Example:
{
"name": "magento/theme-frontend-luma",
"description": "N/A",
"require": {
...
},
"type": "magento2-theme",
"extra": {
"map": [
[
"*",
"frontend/Magento/luma"
]
]
}
}
Final location is <magento_root>/app/design/frontend/Magento/luma
Magento Language Package
"type": "magento2-language"
Installation location: app/i18n
Example:
{
"name": "magento/language-de_de",
"description": "German (Germany) language",
"require": {
...
},
"type": "magento2-language",
"extra": {
"map": [
[
"*",
"Magento/de_DE"
]
]
}
}
Final location is <magento_root>/app/i18n/Magento/de_DE
Magento Library
"type": "magento2-library"
Support for libraries located in lib/internal instead of in the vendor directory.
Example:
{
"name": "magento/framework",
"description": "N/A",
"require": {
...
},
"type": "magento2-library",
"extra": {
"map": [
[
"*",
"Magento/Framework"
]
]
}
}
Final location is <magento_root>/lib/internal/Magento/Framework
Magento Component
"type": "magento2-component"
Installation location: Magento root directory
Example:
{
"name": "magento/migration-tool",
"description": "N/A",
"require": {
...
},
"type": "magento2-component",
"extra": {
"map": [
[
"*",
"dev/tools/Magento/Tools/Migration"
]
]
}
}
Final location is <magento_root>/dev/tools/Magento/Tools/Migration
Read More here
09 - GIT conventions with Composer workflow
● Always validate your composer.json file before you commit.
● Incase you are not sure which composer.json invalid use:
find ./app/code/ -type f -iname "composer.json" -exec composer validate {} \;
● Incase you messup the vendor directory can be rebuild:
rm -rf ./vendor/*
composer install [--no-dev]
● Always run composer install on every git fetch or keep track on when composer.json got
changed
● Always commit your composer.json and composer.lock file on every composer require / composer
remove / composer update
If there are some patches applied you might have to apply them manually.
10 - Patching Magento2
Deploying patches in Magento 2 is very different than what used to do in Magento 1.
● https://github.com/cweagans/composer-patches
● https://github.com/magento/magento2/pull/5978/
● https://github.com/allanpaiste/magento2-patches
● https://github.com/netresearch/composer-patches-plugin
Useful Links and Resources:
● A curated list of amazingly awesome PHP libraries, resources and shiny things.
● Security Audit
● Composer CheatSheet
● Composer Plugin List