Gulp-使用 minimist 與 gulp-if 來依據開發環境調整輸出內容

Gene
Oct 21, 2021

--

我們已經知道如何使用 Gulp 來編譯跟輸出檔案,也知道如何壓縮檔案,但一般我們在開發的過程其實輸出是不需要壓縮的,並且我們會希望保留console.log() 等等,等到生產環境才需要做全面的壓縮,因為壓縮等處理需要時間,會拖長編譯的時間。

因此我們需要根據不同的開發環境來決定輸出結果,我們需要 minimist 套件 以及 gulp-if 套件,前者可以取得 Cli 的變數 ,後者可以不同的變數來輸出不同的結果,這樣講很模糊,往下看吧 !

安裝

gulp install minimist gulp-if --save

Minimist

gulpfile.js

引入 minimist 後,命名一個 options 用來儲存 minimist() 回傳的結果,process.argv.slice(2),可以用來傳遞 CLI 寫入的參數 ,而minimist() 回傳會是一個物件,這邊我們隨意呼叫一個任務 clean

可以看到 minimist() 回傳的結果是一個物件,第一個參數是任務的名稱,第二個以後是回傳我們在終端機寫入的參數名跟值(aaa 跟 123) , 也就是說我們可以呼叫 option.aaa 就可以取得 123。

而 envOptions 又是什麼呢 ? 我們可以在 minimist()的參數再帶入一個預設的選項 envOptions,envOptions 內的 string 參數表示我們要把甚麼參數的值自動都轉為字串,default 則是我們預設就要先帶入哪些參數跟值,因為我們預設就是設定為開發環境 develop, 我們不想要每次執行任務都要另外再打 — env develop ,所以我們在 default 就先設定。

也就是說我們 只打 gulp clean 就會回傳 預設好的 env: develop,相反的,我們可以透過 CLI 指令將環境改為產品環境 也就是打

gulp clean --env production

就會把環境的值更改為 production ,接著我們就可以這樣去判斷目前的環境。

gulp-if

gulp-if 就是在做判斷這件事情

我們在 uglify() 加上 if ()的判斷 ,判斷是否為產品環境,是的話才進行壓縮,同理也可以放在其他更多的地方,例如 gulp-sass 的壓縮

如此一來 我們一般執行任務時就不會進行壓縮等非必要的行為,等到需要產出產品,我們執行任務加上

gulp 任務名 --env prodiction

就可以產出產品環境的程式碼了!

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Gene
Gene

Written by Gene

— Do or Do Not. There is no Try!

No responses yet

Write a response