使用Laravel mix的压缩插件

使用Laravel mix的压缩插件,laravel,npm,webpack,Laravel,Npm,Webpack,我想在npm使用laravel运行prod之后生成压缩资源文件br或gz 我的简化webpack.mix.js与mix.style也大致相同: const mix = require('laravel-mix'); mix.options({ cleanCss: { level: { 1: { specialComments: 'none' } } }, pu

我想在npm使用laravel运行prod之后生成压缩资源文件br或gz

我的简化webpack.mix.js与mix.style也大致相同:

const mix = require('laravel-mix');

mix.options({
    cleanCss: {
        level: {
            1: {
                specialComments: 'none'
            }
        }
    },
    purifyCss: true
});


mix.scripts([
    'node_modules/popper.js/dist/umd/popper.min.js',
    'node_modules/bootstrap/dist/js/bootstrap.min.js',
    'node_modules/toastr/build/toastr.min.js',
    'resources/js/material/custom.js',
    'resources/js/material/waves.js',
    'node_modules/socket.io-client/dist/socket.io.js',
    'node_modules/laravel-echo/dist/echo.iife.js'
],'public/js/admin-all.js');

const CompressionPlugin = require('compression-webpack-plugin');

mix.webpackConfig({
    plugins: [
       
        new CompressionPlugin({
            filename: '[path].br[query]',
            algorithm: 'brotliCompress',
            test: /\.(js|css|html|svg)$/,
            compressionOptions: { level: 11 },
            minRatio: 1,
            deleteOriginalAssets: false,
        }),
    ]
});
我想生成.css.br.js.br。。。在公用文件夹中的.css或.js文件旁边 但在npm运行prod之后,没有生成.br文件

npm运行prod==>跨环境节点环境=生产节点模块/webpack/bin/webpack.js-无进展-隐藏模块-config=节点模块/laravel混合/setup/webpack.config.js

它输出了一个mix.js.br文件,但我不知道这个文件的来源在哪里

怎么做

npm版本:6.12.1 节点版本:12.13 操作系统:Windows 10 pro x64


你的混音配置看起来不错

您的资产规模可能低于设定值,这就是为什么不进行处理的原因

如果您的资产仍然小于2KB,则您可能不需要在项目中进行资产压缩

正如您提到的在webpack.mix.js的末尾添加内容一样,我假设它与

将文件移动到资源/资产。我之所以这样说,是因为你指的是仍然需要对它们进行预处理。 Laravel项目中的常见做法是将分发准备就绪的资产保存在公用文件夹中

现在资源/资产中的文件需要注册为组件,以便使用js或css或其他工具进行预处理

请注意,您可以通过依次调用mixapi方法或使用通配符来注册一个或多个

例如,在resources/assets/js中单独处理所有数据。可以这样写:

mix.js'resources/assets/js/***.js','public/js'; mixapi通过Webpack、Babel或普通任务处理组件

脚本是API处理组件之一,使用

只要您的任何组件都未注册以通过Webpack进行处理,则不会应用在Webpack配置中添加的压缩插件


目前,mix.js.br是mix项目中的黑客为了满足Webpack中条目的要求而留下的。请参见

无法将直接broli压缩与laravel mix.script或mix.styles一起使用, 最好的方法是安装:

npm install bread-compressor-cli -D
并使用以下命令编辑您的project package.json:

"prod": "npm run production && npm run compress",
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"compress": "bread-compressor -s public/css/*.css public/js/*.js"
使用npm后,运行prod,然后运行laravel混合脚本concat+brotli和gzip compress。您可以根据需要编辑压缩脚本


您可以直接提供br和gzip文件,以避免使用apache/nginx对每个请求进行压缩,从而节省时间和CPU

它比threashold ex高我有一个528kB的文件,我的资产在public/css public/jsI udapted我的答案,可能是路径问题?类似于:test:/\.js | css | html | svg$/,include:/\/public/,使用完整的webpack.mix.js文件再次更新,这不是laravel mix的问题,我知道如何使用它。@neoteknic查看我的最新更新。我希望它能进一步澄清为什么您的组件没有被处理,并且在最后一段中我的链接中有一个mix.js.br输出。谢谢,所以没有办法将它用于脚本、样式?不可能压缩文件并使用css或js工具来缩小、压缩等。。。在编辑之后?