У меня есть CDN, указывающий на мой базовый домен, в основном сопоставление 1: 1. Я пытаюсь собрать свой пакет на сервере и хочу загрузить его, используя CDN URL. После npm run build
я хочу получить следующее:
public/
css/
app.css
js/
index.js
1.js.gz
1.js
2.js.gz
2.js
И тогда мой CDN будет отражать это, поэтому я хочу, чтобы эти ресурсы загружались следующим образом:
https://mycdn.com/public/js/index.js
https://mycdn.com/public/css/app.css
Мой текущий webpack.mix.js
config:
mix
.sass('resources/sass/app.css', 'public/css')
.js('resources/js/index.js', 'public/js')
Он генерирует все файлы в правильном месте, что хорошо. Затем я включаю их в мой index.blade.php
:
<script src="{{ elixirCDN('/js/index.js') }}"></script>
elixirCDN - это моя пользовательская функция:
function elixirCDN($file)
{
$cdn = '';
if(config('system.cdn_url'))
{
$cdn = config('system.cdn_url');
}
return $cdn . elixir($file);
}
Она в основном добавляет имя файла к URL-адресу CDN, поэтому все работает нормально.
Проблема начинается, когда я использую динамический c импорт, например так:
const Home = () => import("./Home")
В идеальном случае он также загружается с CDN:
https://mycdn.com/public/js/1.js
но вместо этого он загружается с относительным путем и моим базовым доменом:
https://mybasedomain.com/public/js/1.js
Очевидно, потому что это Dynami c. Как я могу сделать так, чтобы мои блоки загружались из CDN?
Я пытался установить publicPath
в качестве URL своего CDN, но это не имеет никакого эффекта. Я также попробовал setPublicPath()
, но это то же самое.