izolex/asset-macros

This package is abandoned and no longer maintained. No replacement package was suggested.

Asset makro s podporou SRI, nonce, HTTP2 server push a cache-busting pro Nette framework

v2.2.1 2018-11-01 08:58 UTC

This package is auto-updated.

Last update: 2019-03-25 17:25:35 UTC


README

n:asset makro Ti pomůže s CPS. Umí počítat subresource integrity a přidá nonce, abys nemusel zapisovat n:nonce. Pokud budeš chtít, assety Ti přidá do Link hlavičky pro HTTP2 Server Push. Navíc Ti pomůže s lámáním prohlížečové cache a to buď názvem souboru nebo přidáním query string.

Instalace (minimální konfigurace)

extension:
    assetMacros: \Izolex\AssetMacros\DI\Extension

Konfigurace

assetMacros:
    push.on: true
    version.on: true
    sri.on: true
    wwwDir: %wwwDir%
    version:
        extensions:
            - css
            - js
            - ico
        mode: query
        type: mtime
        cleanDist: true
    sri:
        hash: sha256
        crossorigin: anonymous
    push:
        rel: preload

V úkazce je použito výchozí nastavení. Není tedy nutné přidávat konfiguraci do configu. V kombinaci version.on: true a version.mode: fileName se budou soubory ukládat do stejného adresáře. S version.cleanDist: true se budou staré soubory automaticky mazat.

sri.hash může být pouze sha256, sha384, sha512.

version.mode může být pouze fileName, query.

version.type může být pouze mtime, md5.

push.rel může být pouze preload, prefetch.

Použítí

<link n:asset="{$basePath}/css/main.css">
<script n:asset="/js/main.js"></script>
<img n:asset="/img/image.png">

Výsledné HTML:

<link href="/css/main.css" rel="stylesheet" integrity="sha256-..." crossorigin="anonymous" nonce="...">
<script src="/js/main.js" integrity="sha256-..." crossorigin="anonymous" nonce="..."></script>
<img src="/img/image.png">

s version.on: true a version.mode: fileName např.:

<link href="/css/main.1537267324.css" rel="stylesheet" integrity="sha256-..." crossorigin="anonymous" nonce="...">

Hlavička Link:

Link: </css/main.css>; rel=preload; as=style, </js/main.js>; rel=preload; as=script, </img/image.png>; rel=preload; as=image

Pokud budeš vkládat CSS styly, makro Ti automaticky doplní rel="stylesheet" atribut.

Bin

Pro smazání souborů vygenerovaných pro cache-busting (např.: /css/main.1537267324.css) lze použít bin. Mazání probíhá rekurzivně regulárním výrazem #.*\.([0-9]{10}|[a-f0-9]{32})\.[a-z]+$#i. Je tedy nutné pohlídat si názvy souborů.

např.: $ php ./vendor/bin/assetMacros -cd=./www/assets (nebo --clean-dist=./www/assets).

Výsledná cesta k dist adresáři se bere vůči současnému pwd (pracovnímu adresáři).

Před smazáním se vypíše seznam souborů pro smazání, který je nutný potvrdit (y/n). Pro smazání bez dotazu stačí přidat argument -q (nebo --quiet)

Lze vytvořit zkratku do composer scripts (pouze s -q). Např.:

"scripts": {
    "assets": "@php ./vendor/bin/assetMacros -cd=./www/assets -q"
}

A následně spouštět skrze $ composer assets.

Omezení

Do cest k souborům nelze vkládat jiné proměnné než $basePath, $baseUrl, $baseUri. $baseUrl a $baseUri se překládají na $basePath, tudíž ve výsledné cestě bude relativní URL.

Při použití Subresource integrity je nutné při každé změně asset souboru promazat latte cache.

Zároveň je nutné generovat latte šablony skrze prohlížeč, kvůli URL. Podpora přes CLI možná v budoucnu.