Из этого вопроса и вашего другого вопроса я думаю, что вы, возможно, неправильно понимаете цель CDN.
В этом вопросе вы говорите, что хотите скопировать код, размещенный на CDN, объединить его в единый ресурс и разместить самостоятельно . Это не проблема. Однако способ сделать это - не использовать файлы, размещенные на CDN, а использовать фактический исходный код библиотеки и создать свой собственный пакет через такой пакет, как webpack, browserify или rollup.
Эти сборщики учитывают проблемы, с которыми вы сталкиваетесь прямо сейчас, при их сборке. Статические ресурсы либо делаются правильно относительно, либо добавляются встроенными в пакет.
Кроме того, в одном из ваших комментариев вы говорите:
загрузка одного файла намного быстрее, чем загрузка 10 отдельных
JS файлы для 10 разных библиотек. Для каждой библиотеки в браузере есть
инициировать запрос, разрешение домена и так далее. Присоединение файлов JS
сделать загрузку намного быстрее, а также PageSpeed Insights даст вам много
лучший результат при импорте меньшего количества файлов JS
Это верно, если вам действительно нужно загрузить ресурс. Как я уже упоминал в вашем другом вопросе, цель CDN состоит в том, чтобы попытаться сделать так, чтобы вам не приходилось загружать копию библиотеки каждый раз, когда вы посещаете другой веб-сайт. Вместо этого, если оба Сайт A и Сайт B используют somelib@2.0.0, и оба загружают ресурс, имея скрипт с src
: <script src="http://some.cdn.com/somelib@2.0.0"></script>
на любом сайте, который вы посещаете первым, ваш пользователь будет загружать скрипт, и всякий раз, когда ваш пользователь посещает второй сайт, браузер скажет: «Этот ресурс уже кэширован, я просто буду его использовать».
Это сохраняет сетевой вызов для вашего пользователя, а это означает, что нет никаких накладных расходов на запрос, только накладные расходы, которые требуются браузеру, чтобы понять, что у него уже есть ресурс.