部署静态视图文件
当为生产模式设置Commerce软件时,可以使用静态视图文件部署命令将静态文件写入Commerce文件系统。
术语 静态视图文件 引用以下内容:
- “静态”表示可以为站点缓存它(即,文件不是动态生成的)。 示例包括从LESS生成的图像和CSS。
- “视图”是指表示层(来自MVC)。
静态视图文件位于<magento_root>/pub/static
目录中,有些文件也缓存在<magento_root>/var/view_preprocessed
目录中。
静态视图文件部署受以下应用程序模式影响:
您必须使用本主题中介绍的命令手动将静态视图文件写入Commerce文件系统;之后,您可以限制权限以限制漏洞并防止意外或恶意覆盖文件。
要部署静态视图文件:
-
以身份登录到Commerce服务器,或切换到文件系统所有者。
-
删除
<magento_root>/pub/static
的内容,.htaccess
文件除外。 请勿删除此文件。 -
运行静态视图文件部署工具
<magento_root>/bin/magento setup:static-content:deploy
。note info INFO 如果在Admin中启用静态视图文件合并,则 pub/static
目录系统必须可写。命令选项:
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]
下表说明了此命令的参数和值。
--language (-l)
例如:
--language en_US --language es_ES
--exclude-language
--theme <theme>
例如:
--theme Magento/blank --theme Magento/luma
--exclude-theme <theme>
例如,
--exclude-theme Magento/blank
--area (-a)
adminhtml
和frontend
。 默认值为 all。例如:
--area adminhtml
--exclude-area
--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>
定义部署策略。 仅当有多个本地时,才使用这些选项。
--no-parent
--force (-f)
<languages>
和--language
指定值,则<languages>
优先。示例
以下是一些示例命令。
排除主题和HTML缩小
以下命令为美国英语(en_US
)语言部署静态内容,排除随Commerce提供的Luma主题,并且不会缩小HTML文件。
bin/magento setup:static-content:deploy en_US --exclude-theme Magento/luma --no-html-minify
示例输出:
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
---
以下命令使用标准部署策略仅部署具有4个作业的JavaScript:
bin/magento setup:static-content:deploy -s standard --no-misc --no-html --no-fonts --no-images --no-less --no-css -j 4
以下命令仅部署CSS和LESS,包含3个作业和一个快速部署策略:
bin/magento setup:static-content:deploy -s quick --no-misc --no-html --no-fonts --no-images --no-javascript -j 3
为一个主题和一个区域生成静态视图文件
以下命令为所有语言生成静态视图文件,仅前端区域,仅Commerce Luma主题,不生成字体:
bin/magento setup:static-content:deploy --area frontend --no-fonts --theme Magento/luma
示例输出:
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
在不安装Commerce的情况下部署静态视图文件
您可能希望在单独的非生产环境中运行部署过程,以避免在敏感的生产计算机上执行任何构建过程。
为此,请执行以下步骤:
- 运行
bin/magento app:config:dump
以从生产系统导出配置。 - 将导出的文件复制到非生产代码库。
- 部署静态视图文件:
bin/magento setup:static-content:deploy
静态视图文件部署工具疑难解答
请先安装Commerce软件;否则,无法运行静态视图文件部署工具。
症状:运行静态视图文件部署工具时显示以下错误:
ERROR: You need to install the Commerce application before running this utility.
解决方案:
请使用以下步骤:
开发人员自定义静态内容部署工具的提示
创建静态内容部署工具的自定义实施时,请仅使用原子文件写入来写入应在客户端上可用的文件。 如果使用非原子文件写入,则这些文件可能会加载到包含部分内容的客户端上。
使其成为原子文件的选项之一是,写入存储在临时目录中的文件,并在写入结束后将其复制或移动到目标目录(从目标目录将其加载到客户端)。 有关写入文件的详细信息,请参阅php fwrite。