Deploy static view files
The static view files deployment command enables you to write static files to the Commerce file system when the Commerce software is set for production mode.
The term static view file refers to the following:
- “Static” means it can be cached for a site (that is, the file is not dynamically generated). Examples include images and CSS generated from LESS.
- “View” refers to presentation layer (from MVC).
Static view files are located in the <magento_root>/pub/static
directory, and some are cached in the <magento_root>/var/view_preprocessed
directory as well.
Static view files deployment is affected by application modes as follows:
- Default and developer modes: Commerce generates them on demand, but the rest are cached in a file for speed of access.
- Production mode: Static files are not generated or cached.
You must write static view files to the Commerce file system manually using the command discussed in this topic; after that, you can restrict permissions to limit your vulnerabilities and to prevent accidental or malicious overwriting of files.
To deploy static view files:
-
Log in to the Commerce server as, or switch to the file system owner.
-
Delete the contents of
<magento_root>/pub/static
, except for the.htaccess
file. Do not delete this file. -
Run the static view files deployment tool
<magento_root>/bin/magento setup:static-content:deploy
.note info INFO If you enable static view file merging in the Admin, the pub/static
directory system must be writable.Command options:
code language-bash bin/magento setup:static-content:deploy [<languages>] [-t|--theme[="<theme>"]] [--exclude-theme[="<theme>"]] [-l|--language[="<language>"]] [--exclude-language[="<language>"]] [-a|--area[="<area>"]] [--exclude-area[="<area>"]] [-j|--jobs[="<number>"]] [--no-javascript] [--no-css] [--no-less] [--no-images] [--no-fonts] [--no-html] [--no-misc] [--no-html-minify] [--no-parent] [-f|--force]
The following table explains this command’s parameters and values.
<languages>
en_US
.)Find the list by running:
bin/magento info:language:list
--language (-l)
For example:
--language en_US --language es_ES
--exclude-language
--theme <theme>
For example:
--theme Magento/blank --theme Magento/luma
--exclude-theme <theme>
For example,
--exclude-theme Magento/blank
--area (-a)
adminhtml
and frontend
. Default value is all.For example:
--area adminhtml
--exclude-area
--jobs (-j)
--symlink-locale
--content-version=CONTENT-VERSION
--no-javascript
--no-css
--no-less
--no-images
--no-fonts
--no-html
--no-misc
--no-html-minify
-s <quick|standard|compact>
Define the deployment strategy. Use these options only if you have more than one local.
- Use the quick strategy to minimize deployment time. This is the default command option if not specified.
- Use the standard strategy to deploy all static view files for all packages.
- Use the compact strategy to conserve disk space on the server.
--no-parent
--force (-f)
<languages>
and --language
, <languages>
takes precedence.Examples
Following are some example commands.
Excluding a theme and HTML minification
The following command deploys static content for the US English (en_US
) language, excludes the Luma theme provided with Commerce, and does not minify HTML files.
bin/magento setup:static-content:deploy en_US --exclude-theme Magento/luma --no-html-minify
Sample output:
Requested languages: en_US
Requested areas: frontend, adminhtml
Requested themes: Magento/blank, Magento/backend
=== frontend -> Magento/blank -> en_US ===
=== adminhtml -> Magento/backend -> en_US ===
...........................................................
... more ...
Successful: 2055 files; errors: 0
---
New version of deployed files: 1466710645
............
Successful: 1993 files; errors: 0
---
The following command deploys only JavaScript, with 4 jobs, with a standard deployment strategy:
bin/magento setup:static-content:deploy -s standard --no-misc --no-html --no-fonts --no-images --no-less --no-css -j 4
The following command deploys only CSS and LESS with 3 jobs, and a quick deployment strategy:
bin/magento setup:static-content:deploy -s quick --no-misc --no-html --no-fonts --no-images --no-javascript -j 3
Generating static view files for one theme and one area
The following command generates static view files for all languages, the frontend area only, the Commerce Luma theme only, without generating fonts:
bin/magento setup:static-content:deploy --area frontend --no-fonts --theme Magento/luma
Sample output:
Requested languages: en_US
Requested areas: frontend
Requested themes: Magento/luma
=== frontend -> Magento/luma -> en_US ===
...........................................................
... more ...
........................................................................
Successful: 2092 files; errors: 0
---
New version of deployed files: 1466711110
Deploy static view files without installing Commerce
You might want to run the deployment process in a separate, non-production, environment, to avoid any build processes on sensitive production machines.
To do this, take the following steps:
- Run
bin/magento app:config:dump
to export the configuration from your production system. - Copy the exported files to the non-production code base.
- Deploy static view files:
bin/magento setup:static-content:deploy
Troubleshooting the static view files deployment tool
Install the Commerce software first; otherwise, you cannot run the static view files deployment tool.
Symptom: The following error is displayed when you run the static view files deployment tool:
ERROR: You need to install the Commerce application before running this utility.
Solution:
Use the following steps:
- Install the Commerce software using the command line.
- Log in to the application server as, or switch to, the file system owner.
- Delete the contents of
<app_root>/pub/static
directory, except for the.htaccess
file. Do not delete this file. - Deploy static view files:
bin/magento setup:static-content:deploy
Tip for developers customizing the static content deployment tool
When creating a custom implementation of the static content deployment tool, use only atomic file writing for files that should be available on the client. If you use non-atomic file writing, those files might be loaded on the client with partial content.
One of the options for making it atomic is to write to files stored in a temporary directory and copying or moving them to the destination directory (from where they are loaded to client) after writing is over. For details about writing to files, see php fwrite.