V rámci projektu ste previedli úpravy, ktoré sa týkajú CSS alebo JS externých súborov, ktoré na webe linkujete. Úpravy ste nasadili do produkcie, ale štýly celkom nesedia. Pre vás jednoduchá situácia – pomôže premazať cache prehliadača a všetko je v poriadku. Ako však invalidovať linkované súbory u vaších návštevníkov a donútiť ich prehliadače načítať nové?
Najčastejšie v podobnej situácii asi zvyknete pridať za názov súboru niečo ako ?v=1.1
alebo podobne. Buď staticky – natvrdo za názov súboru niečo v rámci query stringu dopíšete, aby sa zmenil jeho názov, čo donúti prehliadač nanovo súbor načítať, alebo dynamicky - napr. timestamp.
<link rel="stylesheet" type="text/css" href="{{ asset('css/app.css') }}?v=1.1" />
Laravel Mix však ponúka omnoho jednoduchšie a dynamickejšie riešenie, vďaka ktorému sa viac nebudete musieť o verzovanie linkovaných súborov starať. Ak teda kompilujete vaše scss/less/sass/js súbory pomocou Laravel Mix, je to veľmii jednoduché. Celé riešenie spočíva v dvoch krokoch.
version()
.
mix.sass('resources/assets/sass/app.scss', 'public/css').version();
asset()
helperom mix()
- ten sa postará o to, aby bola za názov súboru pridaná aktuálna verzia súboru.
<link rel="stylesheet" type="text/css" href="{{ mix('css/app.css') }}" />
To je všetko. Novo vygenerované súbory budú automaticky invalidovať staré.
Vďaka Mixu môžete generovať novú verziu len v kompilácii pre produkciu (cli príkaz npm run production
).
Ak teda používate npm watcher (npm run watch
), nemusí sa generovať nová verzia pri každej úprave. Stačí na to jednoduchá podmienka v mix súbore:
mix.sass('resources/assets/sass/app.scss', 'public/css');
if (mix.inProduction()) {
mix.version();
}
To možeš ľahko zmeniť. Registrácia je zdarma a ako registrovaný člen získaš množstvo výhod. Prečítaj si prečo by si mal byť členom.
Prihlásiť sa Zaregistrovať