部署靜態檢視檔案
靜態檢視檔案部署命令可讓您在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
---
以下命令只會使用標準部署策略部署JavaScript (4個工作):
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。