【发布时间】:2019-09-27 08:09:40
【问题描述】:
我喜欢npm run watch,但我的未压缩包为 7.5MB。我还通过 ngrok 将其用于 HTTPS 使用(和团队使用)。因此,进行简单的页面重新加载以检查 CSS 更新是否按预期工作需要相当长的时间。
如果我可以在开发过程中提供 gzip 压缩版本,那就太好了...但是每当我在本地创建 app.js.gzlocally 时,元数据标头都不会正确设置。
在 AWS S3 上,我可以轻松设置标题:Content-Encoding: gzip 和 Content-Type: text/javascript
通过 S3 存储桶,这些元数据标头告诉浏览器扩展文件,然后网站正确呈现。
但是我试图在没有 S3 的情况下在本地执行此操作,因此我不必等待上传时间。那么如何设置这个元数据呢?使用 webpack?与阿帕奇?其他?
我正在使用 Laravel 后端和带有 compression-webpack-plugin 的 React-Redux 前端
这是我的 webpack.mix.js:
const mix = require('laravel-mix');
const CompressionPlugin = require('compression-webpack-plugin');
mix.react('resources/js/app.js', 'public/js')
.webpackConfig({
plugins: [
new CompressionPlugin({
filename: '[path].gz[query]',
algorithm: 'gzip',
test: /\.js$|\.css$|\.html$|\.svg$/,
threshold: 10240,
minRatio: 0.8,
}),
],
});
如果没有正确的元数据标头,浏览器不知道对 gzip 压缩文件进行膨胀,所以我只会收到一个控制台错误:Uncaught SyntaxError: Invalid or unexpected token
【问题讨论】:
-
嗨..你有解决方案吗?