生產環境打包優化 - daniel-qa/Vue GitHub Wiki
生產環境打包優化
config.optimization.minimizer[0].options.terserOptions.compress.drop_console = process.env.NODE_ENV === 'production'
這行程式碼的目的是在 Vue.js 專案的生產環境 (production) 打包時,移除所有 console.log 的呼叫。
讓我們分解一下:
config.optimization.minimizer:
這個部分指的是 Webpack 配置中的優化 (optimization) 設定,而 minimizer 則是用於壓縮和優化程式碼的工具。
在 Vue CLI 專案中,預設使用 TerserPlugin 來進行程式碼壓縮。
[0]: 因為 minimizer 可能有多個壓縮工具,所以 [0] 代表第一個工具,也就是 TerserPlugin。
.options.terserOptions.compress.drop_console: 這個部分是在設定 TerserPlugin 的選項。
terserOptions 包含了 Terser 的各種配置,compress 則是關於壓縮的設定,而 drop_console 則是用來移除 console.log 的。
= process.env.NODE_ENV === 'production': 這個等號的右邊是一個條件判斷式。
**process.env.NODE_ENV **是一個環境變數,在開發環境中通常是 'development',在生產環境中則是 'production'。所以,這個條件判斷式會檢查目前的環境是否為生產環境。
總結來說,這行程式碼的意思是:
只有在專案打包成生產環境版本時,才會將 config.optimization.minimizer[0].options.terserOptions.compress.drop_console 設定為 true,這樣 TerserPlugin 就會在壓縮程式碼時移除所有的 console.log 呼叫。
- 為什麼要移除 console.log?
在開發過程中,console.log 很有用,可以幫助開發者debug。然而,在生產環境中,console.log 通常沒有必要,而且可能會洩漏敏感資訊,或是影響效能。因此,在打包生產環境版本時,通常會將 console.log 移除。