使用Laravel mix的压缩插件
我想在npm使用laravel运行prod之后生成压缩资源文件br或gz 我的简化webpack.mix.js与mix.style也大致相同:使用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
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工具来缩小、压缩等。。。在编辑之后?