Моя текущая конфигурация веб-пакета:
mix.webpackConfig({
output: {
chunkFilename: "[name].js?ver=[chunkhash:8]",
filename: "[name].js",
}
});
mix.js('resources/js/app.js', 'public/js')
.sass('resources/sass/app.scss', 'public/css')
.sass('resources/sass/web.scss', 'public/css/web.css')
.options({
processCssUrls: false,
uglify: {
uglifyOptions: {
warnings: false,
comments: false,
beautify: false,
sourceMap: true,
compress: {
warnings: false,
conditionals: true,
unused: true,
comparisons: true,
sequences: true,
dead_code: true,
evaluate: true,
if_return: true,
join_vars: true,
drop_debugger: true
},
output: {
comments: false
},
}
}
}).version().sourceMaps();
mix.extract(['vue', 'jquery','vue-awesome-swiper', 'bootstrap', 'lodash', 'vue-pluralize', 'vue-read-more', 'vue-sticky-directive', 'vue-waypoint']);
Когда я запускаю npm watch или npm production, он создает десятки javascript файлов в каталоге publi c, например 11. js или 19. js. Даже с аргументом? Ver =, у нас все еще есть проблемы с некоторыми браузерами, которые кэшируют javascript и не обновляют при внесении изменений.
В прошлом у нас была эта проблема с файлами поставщика и манифеста, поэтому одна мы исправили это в Laraval:
<script src="/cache-bust-{{ \Cache::remember('cache-bust_' . md5(mix('/js/manifest.js')), 60, function () { return md5(mix('/js/manifest.js')); }) }}{{ mix('/js/manifest.js') }}"></script>
<script src="/cache-bust-{{ \Cache::remember('cache-bust_' . md5(mix('/js/vendor.js')), 60, function () { return md5(mix('/js/vendor.js')); }) }}{{ mix('/js/vendor.js') }}"></script>
<script src="/cache-bust-{{ \Cache::remember('cache-bust_' . md5(mix('/js/app.js')), 60, function () { return md5(mix('/js/app.js')); }) }}{{ mix('/js/app.js') }}"></script>
И затем добавили это переписывание в apache conf:
RewriteRule ^cache-bust-(.*)/js/(.*)$ /js/$2 [L]
Таким образом, может возникнуть запрос на поиск:
<script src="/cache-bust-e8504524e2eb05e2daa34d6cbb91dd4c/js/manifest.js?id=be4f23f7f36b3345edf2"></script>
И Apache правильно его маршрутизируют и на 100% лучше справляются с очисткой кэша.
Мы хотели бы сделать то же самое с этими маленькими js файлами, такими как 11. js. Имейте в виду, что я не хочу на самом деле изменять chunkFilename или имя файла, потому что когда вы делаете это и основываете имя, например, на chunkha sh, то каждый раз, когда вы перекомпилируете, старые js файлы со старой chunkha sh имя осталось.
Я хочу поставить префикс каталога перед тем, где вызывается 11. js. Я не могу найти то, что говорит mix, чтобы поместить эти файлы непосредственно в каталог publi c? В идеале я хотел бы, чтобы какая-то конфигурация говорила что-то вроде:
urlPath: "cache-js-bust-[chunkhash:8]/[chunkFilename]"
Затем переписать:
RewriteRule ^cache-js-bust-(.*)/(.*)$ /$2 [L]
Есть мысли?