Я использую Symfony Webpack Encore для своих активов.Я создаю gzip-файлы с помощью CompressionPlugin и загружаю его на Amazon S3 с помощью S3Plugin.Я не сжимаю все файлы ресурсов, поэтому я не могу изменить все имена файлов с помощью опции «configureFilenames».Мне нужен .gz в имени файла, из-за этого я устанавливаю кодировку при загрузке в S3.
Манифест.json, сгенерированный Symfony Webpack Encore, ссылается только на мои исходные ресурсы, а не на gzipверсии.
Encore
.addPlugin(new CompressionPlugin({
test: /\.(js|css)$/,
filename: '[path].gz[query]',
minRatio: 0.8,
algorithm: 'gzip',
deleteOriginalAssets: false
}));
Encore
.addPlugin(new S3Plugin({
s3Options: {
...
},
s3UploadOptions: {
Bucket: '...',
// Here we set the Content-Encoding header for all the gzipped files to 'gzip'
ContentEncoding(fileName) {
if (/\.gz/.test(fileName)) {
return 'gzip';
}
},
},
}));
Сгенерированный файл manifest.json выглядит следующим образом:
{
"build/main.css": "/build/main.fcbbf369.css",
"build/main.js": "/build/main.d2286d33.js",
"build/main.fcbbf369.css.gz": "/build/main.fcbbf369.css.gz",
"build/main.d2286d33.js.gz": "/build/main.d2286d33.js.gz",
}
, но должен выглядеть так:
{
"build/main.css": "/build/main.fcbbf369.css.gz",
"build/main.js": "/build/main.d2286d33.js.gz"
}