Интеграция 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. Значения аттрибута crossorigin для всех ресурсов. Не чувствителен к регистру. Возможные значения: 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.