我正在将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"
}