Webpack清单未使用Amazon S3的gzip版本

时间:2019-07-09 07:39:02

标签: symfony webpack webpack-encore

我正在将Symfony Webpack Encore用于我的资产。我创建gzip 带有CompressionPlugin的文件,然后使用S3Plugin将其加载到Amazon S3上。我没有压缩所有资产文件,因此无法使用“ configureFilenames”选项更改所有文件名。 我需要文件名中的.gz,因为我在上传到S3时设置了编码。

由Symfony Webpack Encore生成的manifest.json仅引用我的原始资产,而不引用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"
}

0 个答案:

没有答案