Distribuera statiska vyfiler
Med distributionskommandot för statiska visningsfiler kan du skriva statiska filer till filsystemet i Commerce när Commerce-programmet är inställt för produktionsläge.
Termen statisk vyfil refererar till följande:
- "Statisk" betyder att den kan cachas för en plats (det vill säga att filen inte genereras dynamiskt). Exempel är bilder och CSS som genererats från LESS.
- "Visa" avser presentationsskikt (från MVC).
Statiska vyfiler finns i katalogen <magento_root>/pub/static
och vissa cachelagras även i katalogen <magento_root>/var/view_preprocessed
.
Distributionen av statiska visningsfiler påverkas av programlägena enligt följande:
- Lägen Standard och utvecklare: Commerce genererar dem vid behov, men resten cachas i en fil för att få snabb åtkomst.
- Produktion: Statiska filer genereras eller cachelagras inte.
Du måste skriva statiska vyfiler till filsystemet i Commerce manuellt med det kommando som beskrivs i det här avsnittet. Därefter kan du begränsa behörigheter för att begränsa dina säkerhetsluckor och förhindra oavsiktlig eller skadlig överskrivning av filer.
Så här distribuerar du statiska vyfiler:
-
Logga in på Commerce-servern som eller växla till filsystemets ägare.
-
Ta bort innehållet i
<magento_root>/pub/static
, förutom i filen.htaccess
. Ta inte bort filen. -
Kör distributionsverktyget
<magento_root>/bin/magento setup:static-content:deploy
för statiska vyfiler.note info INFO Om du aktiverar filsammanfogning i statisk vy i Admin måste katalogsystemet pub/static
vara skrivbart.Kommandoalternativ:
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]
I följande tabell förklaras det här kommandots parametrar och värden.
<languages>
en_US
.)Hitta listan genom att köra:
bin/magento info:language:list
--language (-l)
Till exempel:
--language en_US --language es_ES
--exclude-language
--theme <theme>
Till exempel:
--theme Magento/blank --theme Magento/luma
--exclude-theme <theme>
Exempel:
--exclude-theme Magento/blank
--area (-a)
adminhtml
och frontend
. Standardvärdet är all.Till exempel:
--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>
Definiera distributionsstrategin. Använd endast dessa alternativ om du har fler än en lokal plats.
- Använd snabbstrategin för att minimera distributionstiden. Detta är standardkommandoalternativet om det inte anges.
- Använd standardstrategin för att distribuera alla statiska vyfiler för alla paket.
- Använd kompakt strategi för att spara diskutrymme på servern.
--no-parent
--force (-f)
<languages>
och --language
har <languages>
företräde.Exempel
Här följer några exempelkommandon.
Utesluta ett tema och HTML-miniatyr
Följande kommando distribuerar statiskt innehåll för amerikansk engelska (en_US
), exkluderar Luma-temat som ingår i Commerce och minierar inte HTML-filer.
bin/magento setup:static-content:deploy en_US --exclude-theme Magento/luma --no-html-minify
Exempel:
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
---
Följande kommando distribuerar endast JavaScript, med fyra jobb, med en standarddistributionsstrategi:
bin/magento setup:static-content:deploy -s standard --no-misc --no-html --no-fonts --no-images --no-less --no-css -j 4
Följande kommando distribuerar endast CSS och LESS med 3 jobb och en snabb distributionsstrategi:
bin/magento setup:static-content:deploy -s quick --no-misc --no-html --no-fonts --no-images --no-javascript -j 3
Generera statiska vyfiler för ett tema och ett område
Följande kommando genererar statiska visningsfiler för alla språk, endast för frontend-området och Commerce Luma-temat, utan att generera teckensnitt:
bin/magento setup:static-content:deploy --area frontend --no-fonts --theme Magento/luma
Exempel:
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
Distribuera statiska vyfiler utan att installera Commerce
Du kanske vill köra distributionsprocessen i en separat, icke-produktionsmiljö för att undvika eventuella byggprocesser på känsliga produktionsdatorer.
Gör så här:
- Kör
bin/magento app:config:dump
om du vill exportera konfigurationen från produktionssystemet. - Kopiera de exporterade filerna till kodbasen för icke-produktion.
- Distribuera statiska vyfiler:
bin/magento setup:static-content:deploy
Felsöka distributionsverktyget för statiska vyfiler
Installera Commerce först, annars kan du inte köra distributionsverktyget för statiska vyfiler.
Symptom: Följande fel visas när du kör distributionsverktyget för statiska vyfiler:
ERROR: You need to install the Commerce application before running this utility.
Lösning:
Gör så här:
- Installera Commerce-programmet med kommandoraden 🔗.
- Logga in på programservern som, eller växla till, ägare av filsystemet.
- Ta bort innehållet i katalogen
<app_root>/pub/static
, förutom i filen.htaccess
. Ta inte bort filen. - Distribuera statiska vyfiler:
bin/magento setup:static-content:deploy
Tips för utvecklare som anpassar verktyget för statisk innehållsdistribution
När du skapar en anpassad implementering av det statiska innehållsdistributionsverktyget ska du endast använda atomiska filskrivningar för filer som ska vara tillgängliga på klienten. Om du använder icke-atomisk filskrivning kan dessa filer läsas in på klienten med delvis innehåll.
Ett av alternativen för att göra det atomiskt är att skriva till filer som lagras i en tillfällig katalog och kopiera eller flytta dem till målkatalogen (varifrån de läses in till klienten) när skrivningen är klar. Mer information om hur du skriver till filer finns i php fwrite.