Vite中Terser插件基本使用指南
在 Vite 中使用 Terser 插件可以對 JavaScript 代碼進行壓縮和混淆處理,通常用于生產(chǎn)環(huán)境構(gòu)建優(yōu)化。
安裝依賴
Vite 2.x 版本
npm install @vitejs/plugin-terser --save-dev # 或 yarn add @vitejs/plugin-terser -D
Vite 3.0+ 版本
@vitejs/plugin-terser在 Vite 3.0+ 中已被移除并內(nèi)置,無需單獨安裝。如果 Vite 版本 ≥3.0,直接在配置中使用即可,無需安裝此插件。
配置方式(Vite 3.0+)
vite.config.ts
export default defineConfig({
build: {
sourcemap: false, // 生產(chǎn)環(huán)境是否生成 sourcemap(關(guān)閉可減小構(gòu)建體積)。默認:false
// 指定使用 terser 進行壓縮(生產(chǎn)環(huán)境默認值),terser構(gòu)建后文件體積更小。開發(fā)環(huán)境默認:false(不壓縮)
minify: "terser",
// Terser 具體配置
terserOptions: {
// 壓縮選項
compress: {
drop_console: true, // 移除所有 console 語句。默認:false
drop_debugger: true, // // 移除 debugger。默認:
// 移除 console.log 等指定方法(與 drop_console 配合使用)默認:[](不特殊處理任何函數(shù))
pure_funcs: ['console.log', 'console.warn'],
collapse_vars: true, // 折疊連續(xù)的 var 聲明。默認:true
reduce_vars: true, // 提取使用多次但沒被定義為變量的靜態(tài)值。默認:true(提取靜態(tài)值)
},
// 混淆選項
mangle: {
toplevel: true, // 混淆變量名。默認:false
keep_classnames: false, // 保留類名。默認:false(不強制保留類名,Terser 會智能判斷)
keep_fnames: false, // 保留函數(shù)名。默認:false(不強制保留函數(shù)名)
},
// 輸出選項
output: {
comments: false, // 移除所有注釋。默認:'some'(保留部分注釋,如 @license、@preserve)
beautify: false, // 不保留空格和換行(極致壓縮)。默認:false
ascii_only: true, // 為被混淆的變量生成更短的名稱。默認:false(不強制 ASCII 編碼)
},
},
}
})
關(guān)鍵配置說明:
- minify: 'terser'
- Vite 3.0+ 生產(chǎn)環(huán)境默認使用
terser壓縮,也可設(shè)置為esbuild(更快但壓縮率稍低) - 開發(fā)環(huán)境無需壓縮,會自動忽略此配置
- Vite 3.0+ 生產(chǎn)環(huán)境默認使用
- compress 壓縮選項
drop_console: true:移除所有console相關(guān)代碼(生產(chǎn)環(huán)境常用)drop_debugger: true:移除debugger語句pure_funcs:精確指定需要移除的函數(shù)(如只刪console.log保留console.error)
- mangle 混淆選項
- 開啟后會重命名變量名和函數(shù)名,提高代碼安全性
- 若需要保留類名或函數(shù)名(如使用反射機制時),可將
keep_classnames或keep_fnames設(shè)為true
- output 輸出選項
comments: false:移除所有注釋(包括版權(quán)信息,需注意開源協(xié)議)beautify: false:關(guān)閉美化輸出,生成最緊湊的代碼
注意事項:
- 配置僅在
production環(huán)境生效,開發(fā)環(huán)境構(gòu)建不會執(zhí)行壓縮 - 如需部分保留注釋,可將
comments設(shè)為'some'或自定義函數(shù)(參考 Terser 文檔) - 過度壓縮可能導(dǎo)致源碼映射(sourcemap)失效,調(diào)試時可臨時開啟
sourcemap: true
到此這篇關(guān)于Vite中Terser插件基本使用指南的文章就介紹到這了,更多相關(guān)Vite Terser插件使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue.js+elementUI實現(xiàn)點擊左右箭頭切換頭像功能(類似輪播圖效果)
這篇文章主要介紹了vue.js+elementUI實現(xiàn)點擊左右箭頭切換頭像功能(類似輪播圖),本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09
npm安裝vue腳手架報錯警告npm WARN deprecated
安裝vue腳手架報錯可能具體原因比較多,可以根據(jù)報錯信息進行排查,本文主要介紹了npm安裝vue腳手架報錯警告npm WARN deprecated,感興趣的可以了解一下2023-11-11
vue template中slot-scope/scope的使用方法
今天小編就為大家分享一篇vue template中slot-scope/scope的使用方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09

