生產環境打包優化 - 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 移除。