laravel-mix自動(dòng)壓縮html模板文件

laravel-mix 自動(dòng)壓縮html模板文件

之前講過從零開始部署一個(gè) Laravel 項(xiàng)目

這次講一下怎么自動(dòng)壓縮php模板文件

安裝依賴

cd?/var/www/html/laravel-project

npm?i?-D?laravel-mix@^5.x?laravel-mix-template-minifier?watch?shelljs

壓縮處理

打開文件webpack.mix.js,并添加以下內(nèi)容:

mix.minTemplate?\=?require("laravel-mix-template-minifier");

mix.minTemplate("storage/framework/views/\*.php",?"storage/framework/views/",?{

collapseInlineTagWhitespace:?true,

collapseWhitespace:?true,

minifyCSS:?true,

minifyJS:?true,

processConditionalComments:?true,

removeAttributeQuotes:?false,

removeComments:?true,

removeTagWhitespace:?false,

trimCustomFragments:?false,

});

壓縮的參數(shù),見html-minifier(https://github.com/kangax/html-minifier?spm=a2c6h.14275010.0.0.70f559611yXtvP)

監(jiān)聽文件變化

在項(xiàng)目根目錄新建文件compress.js,寫入以下內(nèi)容:

let?shell?=?require("shelljs");

let?watch?=?require("watch");

let?precessing?=?false;

watch.watchTree("./storage/framework/views",?function(f,?curr,?prev)?{

if?(!precessing)?{

precessing?=?true;

shell.exec("npm?run?prod");

setTimeout(()?=>?{

precessing?=?false;

},?5000);

}

});

開機(jī)自啟監(jiān)聽命令

以上步驟完成后,在命令行執(zhí)行node compress.js,即可實(shí)現(xiàn)自動(dòng)監(jiān)聽壓損模板文件,可以打開網(wǎng)頁看到頁面內(nèi)的<style>以及<script>中的內(nèi)容已經(jīng)壓縮了。打開storage/framework/views/中的模板文件,發(fā)現(xiàn)html已被壓縮成一行,如果模板中有包含php代碼,則不會(huì)去除php中的換行等。

有些頁面的js代碼不會(huì)壓縮,暫時(shí)沒找到什么原因。

由于監(jiān)聽文件命令是常駐命令臺(tái)的,所以我們要設(shè)置開機(jī)自啟,并且后臺(tái)啟動(dòng)該命令。

nano?/etc/rc.d/rc.local

#?添加以下內(nèi)容

cd?/var/www/html/ysmj-laravel

nohup?node?compress.js?>?/var/www/html/laravel-project/compress.out??2>&1?&

#?保存文件。然后設(shè)置權(quán)限使其開機(jī)自啟

chmod?+x?/etc/rc.d/rc.local

優(yōu)化

由于laravel自帶的package命令npm run prod中帶有--progress,長期使用,會(huì)導(dǎo)致壓縮日志compress.out日益過大。

在package.json中,新添加compress命令,去除--progress參數(shù),如下:

"scripts":?{

"dev":?"npm?run?development",

"development":?"cross-env?NODE_ENV=development?node_modules/webpack/bin/webpack.js?--progress?--hide-modules?--config=node_modules/laravel-mix/setup/webpack.config.js",

"watch":?"cross-env?NODE_ENV=development?node_modules/webpack/bin/webpack.js?--watch?--progress?--hide-modules?--config=node_modules/laravel-mix/setup/webpack.config.js",

"watch-poll":?"npm?run?watch?--?--watch-poll",

"hot":?"cross-env?NODE_ENV=development?node_modules/webpack-dev-server/bin/webpack-dev-server.js?--inline?--hot?--config=node_modules/laravel-mix/setup/webpack.config.js",

"compress":?"cross-env?NODE_ENV=production?node_modules/webpack/bin/webpack.js?--hide-modules?--config=node_modules/laravel-mix/setup/webpack.config.js",

"prod":?"npm?run?production",

"production":?"cross-env?NODE_ENV=production?node_modules/webpack/bin/webpack.js?--progress?--hide-modules?--config=node_modules/laravel-mix/setup/webpack.config.js"

},

然后compress.js文件需要修改,如下:

let?shell?=?require("shelljs");

let?watch?=?require("watch");

let?precessing?=?false;

watch.watchTree("./storage/framework/views",?function(f,?curr,?prev)?{

if?(!precessing)?{

precessing?=?true;

shell.exec("npm?run?compress");

setTimeout(()?=>?{

precessing?=?false;

},?5000);

}

});

本文來自PHP中文網(wǎng)laravel教程的欄目:https://www.php.cn/phpkj/laravel/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容