The top-level filesystem structure
The following list depicts the root Magento filesystem structure:
.htaccess
.htaccess.sample
.php_cs
.travis.yml
CHANGELOG.md
CONTRIBUTING.md
CONTRIBUTOR_LICENSE_AGREEMENT.html
COPYING.txt
Gruntfile.js
LICENSE.txt
LICENSE_AFL.txt
app
bin
composer.json
composer.lock
dev
index.php
lib
nginx.conf.sample
package.json
php.ini.sample
phpserver
pub
setup
update
var
vendor
The app/etc/di.xml
file is one of the most important files that we might often look into during development. It contains various class mappings or preferences for individual interfaces.
The var/magento/language-*
directories is where the registered languages reside. Though each module can declare its own translations under app/code/{VendorName}/{ModuleName}/i18n/
, Magento will eventually fall back to its own individual module named i18n
in case translations are not found in the custom module or within the theme directory.
The bin
directory is where we can find the magento
file. The magento
file is a script that is intended to be run from a console. Once triggered via the php bin/magento
command, it runs an instance of the Magento\Framework\Console\Cli
application, presenting us with quite a number of console options. We can use the magento
script to enable/disable cache, enable/disable modules, run an indexer, and do many other things.
The dev
directory is where we can find the Magento test scripts. We will have a look at more of those in later chapters.
The lib
directory comprises two major subdirectories, namely the server-side PHP library code and fonts found under lib/internal
and the client-side JavaScript libraries found in lib/web
.
The pub
directory is where the publicly exposed files are located. This is the directory that we should set as root when setting up Apache or Nginx. The pub/index.php
file is what gets triggered when the storefront is opened in a browser.
The var
directory is where the dynamically generated group type of files such as cache, log, and a few others get created in. We should be able to delete the content of this folder at any time and have Magento automatically recreate it.
The vendor
directory is where most of the code is located. This is where we can find various third-party vendor code, Magento modules, themes, and language packs. Looking further into the vendor
directory, you will see the following structure:
.htaccess
autoload.php
bin
braintree
composer
doctrine
fabpot
justinrainbow
league
lusitanian
magento
monolog
oyejorge
pdepend
pelago
phpmd
phpseclib
phpunit
psr
sebastian
seld
sjparkinson
squizlabs
symfony
tedivm
tubalmartin
zendframework
Within the vendor directory, we can find code from various vendors, such as phpunit
, phpseclib
, monolog
, symfony
, and so on. Magento itself can be found here. The Magento code is located under vendor/magento
directory, listed (partially) as follows:
composer
framework
language-en_us
magento-composer-installer
magento2-base
module-authorization
module-backend
module-catalog
module-customer
module-theme
module-translation
module-ui
module-url-rewrite
module-user
module-version
module-webapi
module-widget
theme-adminhtml-backend
theme-frontend-blank
theme-frontend-luma
You will see that the further structuring of directories follows a certain naming schema, whereas the theme-*
directory stores themes, the module-*
directory stores modules, and the language-*
directory stores registered languages.