Манифест веб-пакета не использует версию gzip от Amazon S3 - PullRequest
1 голос
/ 09 июля 2019

Я использую 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"
}
...