Інтеграція jsdelivr.net для MODX Revolution

Синтаксис:

    
        [[jsdelivr.net?
            &subresources=`{
                "link" : [
                    { "package" : "", "version" : "", "file" : "", "integrity" : "", "crossorigin" : "" },

                    { "user" : "", "repo" : "", "version" : "", "file" : "", "integrity" : "", "crossorigin" : "" },

                    { "svn" : "plugins", "project" : "", "version" : "", "file" : "", "integrity" : "", "crossorigin" : "" },
                    { "svn" : "themes", "project" : "", "version" : "", "file" : "", "integrity" : "", "crossorigin" : "" }
                ],
                "script" : [
                    { "package" : "", "version" : "", "file" : "", "async" : "", "defer" : "", "integrity" : "", "crossorigin" : "" },

                    { "user" : "", "repo" : "", "version" : "", "file" : "", "async" : "", "defer" : "", "integrity" : "", "crossorigin" : "" },

                    { "svn" : "plugins", "project" : "", "version" : "", "file" : "", "async" : "", "defer" : "", "integrity" : "", "crossorigin" : "" },
                    { "svn" : "themes", "project" : "", "version" : "", "file" : "", "async" : "", "defer" : "", "integrity" : "", "crossorigin" : "" }
                ]
            }`
            &async=`false`
            &defer=`false`
            &integrity=`sha256 sha384 sha512`
            &crossorigin=`anonymous`
            &lifetime=`604800`
        ]]
        [[+jsdelivr.net.link]]
        [[+jsdelivr.net.script]]
    

Параметри:

&subresources
Обов'язковий. JSON-об'єкт, що містить інформацію про ресурси, їх версії та файли. В залежності від джерела відрізняються обов'язкові параметри.
Ім'я пакунка є обов'язковим для NPM, в той час як інші властивості замінюються відповідними за замовчуванням з перенаправлення, якщо не вказані. Багато пакунків не мають встановленного за замовчуванням імені файлу.
Ім'я користувача, репозиторій та ім'я файлу є обов'язковими для GitHub, в той час як версія замінюється останньою, якщо не вказана.
SVN репозиторій WordPress для плагінів потребує лише ім'я проекту та ім'я файлу, в той час як версія замінюється останньою, якщо не вказана. SVN репозиторій WordPress для тем потребує усі параметри.
Усі імена файлів, не залежно від джерела, можу мати додаткове розширення .min для автоматичної мініфікації на стороні CDN.
&async
Не обов'язковий. За замовчуванням false. Значення атрибуту async для усіх ресурсів script. Інтерпретується як boolean. Може бути вказаний окремо для ресурсу script.
&defer
Не обов'язковий. За замовчуванням false. Значення атрибуту defer для усіх ресурсів script. Інтерпретується як boolean. Може бути вказаний окремо для ресурсу script.
&integrity
Не обов'язковий. За замовчуванням sha256 sha384 sha512. Алгоритм, що буде використано для обчислення хешу контролю цілісності ресурсів. Не чутливий до регістру. Можливі значення: sha256, sha384, sha512, або будь-яка їх комбінація. Може бути вказаний окремо для ресурсу.
&crossorigin
Не обов'язковий. За замовчуванням anonymous. Значення атрибуту сrossorigin для усіх ресурсів. Не чутливий до регістру. Можливі значення: anonymous, use-credentials. Може бути вказаний окремо для ресурсу.
&lifetime
Не обов'язковий. За замовчуванням 604800. Термін дії кешу ресурсів.

Плейсхолдери:

[[+jsdelivr.net.link]]
Плейсхолдер для всіх тегів link.
[[+jsdelivr.net.script]]
Плейсхолдер для всіх тегів script.

Приклади:

Остання версія jQuery з NPM та prism.js ( async ) з GitHub, зі щоденним оновленням:

    
        [[jsdelivr.net?
            &subresources=`{
                "script" : [
                    { "package" : "jquery", "file" : "dist/jquery.min.js" },
                    { "user" : "PrismJS", "repo" : "prism", "file" : "prism.min.js", "async" : "true" }
                ]
            }`
            &lifetime=`86400`
        ]]
    

Повна тема Twenty Eightteen для WordPress та Slimstat Analytics, з CDN WordPress, з автоматичною мініфікацією на стороні CDN для усіх файлів та defer для усіх ресурсів script:

    
        [[jsdelivr.net?
            &subresources=`{
                "link" : [
                    { "svn" : "themes", "project" : "twenty-eightteen", "version" : "1.7", "file" : "assets/css/colors-dark.min.css" },
                    { "svn" : "themes", "project" : "twenty-eightteen", "version" : "1.7", "file" : "assets/css/editor-style.min.css" },
                    { "svn" : "themes", "project" : "twenty-eightteen", "version" : "1.7", "file" : "assets/css/ie8.min.css" },
                    { "svn" : "themes", "project" : "twenty-eightteen", "version" : "1.7", "file" : "assets/css/ie9.min.css" }
                ],
                "script" : [
                    { "svn" : "plugins", "project" : "wp-slimstat", "version" : "4.6.5", "file" : "wp-slimstat.min.js" },
                    { "svn" : "themes", "project" : "twenty-eightteen", "version" : "1.7", "file" : "assets/js/customize-controls.min.js" },
                    { "svn" : "themes", "project" : "twenty-eightteen", "version" : "1.7", "file" : "assets/js/customize-preview.min.js" },
                    { "svn" : "themes", "project" : "twenty-eightteen", "version" : "1.7", "file" : "assets/js/global.min.js" },
                    { "svn" : "themes", "project" : "twenty-eightteen", "version" : "1.7", "file" : "assets/js/html5.min.js" },
                    { "svn" : "themes", "project" : "twenty-eightteen", "version" : "1.7", "file" : "assets/js/jquery.scrollTo.min.js" },
                    { "svn" : "themes", "project" : "twenty-eightteen", "version" : "1.7", "file" : "assets/js/navigation.min.js" },
                    { "svn" : "themes", "project" : "twenty-eightteen", "version" : "1.7", "file" : "assets/js/skip-link-focus-fix.min.js" }
                ]
            }`
            &defer=`true`
        ]]
    

Примітки:

Кеш можна очистити вручну у меню Управління / Очистити кеш / jsdelivr.net.