今天筆者打算來分享自己從頭建立這個專案的一些過程,以及筆者自己的一些習慣。
筆者習慣建立專案都從 GitHub 上面先建立,然後建立完成後再透過 Git 指令 clone 到本機。
在 GitHub 上面建立專案有幾個好處:
git clone
就可以省掉 git init
、git remote add
、git push
等指令。.gitignore
樣板,在此我選 Node
。LICENCE
,在此我選 MIT License
。在 GitHub 上面建立專案後,就可以把專案 clone 到本機了。
$ git clone git@github.com:taichunmin/chameleon-ultra.js.git
接下來我會使用 Node.js 的套件管理器 yarn
來設定 package.json
:
$ yarn init -y
然後就是安裝一些專案所需的相依性套件,但因為數量很多,文章中只會簡單介紹比較特別的一些,詳細的清單請參考 package.json。
lodash
lodash
是一個提供很多好用輔助函式的套件,筆者現在幾乎已經是每個專案都必裝這個套件了,但可惜這個套件沒有 Promise 相關的輔助函式。
typescript
在 Side Project 就是可以勇於嘗試一些自己不熟悉的東西,為了要增加自己對 TypeScript 掌握度,這個專案我決定使用 TypeScript 來開發,所以安裝了不少 TypeScript 所需的相依性套件。
rollup
這個專案預計會把 TypeScript 轉換成三種格式的 JavaScript,分別是瀏覽器的 iife
、Node.js 的 cjs
以及 module 的 mjs
,類似的打包工具有很多,我在這專案內選擇使用 rollup
。
pug
這個專案除了 TypeScript 之外,我也計畫要做一些網頁放到 GitHub Pages 上面,除了作為範例之外,同時也是為了開發自己需要的 GUI 介面。在這個專案我選擇我比較熟悉的 pug
來開發網頁,這是 Express.js 預設使用的樣板引擎。
如果你希望一個開源專案能夠被更多人使用,那麼你就會需要幫它寫良好的文件,除了一般的教學文件會用 Markdown 來寫之外,我還打算從程式碼中自動產生 Reference 網頁,目前預計使用 TypeDoc 來產生,也算是給我自己一個練習 TypeDoc 的機會。
eslint
這個相依性套件可以自動檢查及修正一些程式語法上的錯誤,以及程式碼的 Coding Style。
jest
這個相依性套件是一個單元測試框架,我同時也會在 GitHub Actions 自動執行單元測試,確保我有寫測試的程式碼運作正常。
dotenv
可以自動從 .env
檔案中讀取設定,然後放到環境變數 process.env
的套件,這適合存放不同環境及不同開發者的設定,以及一些不太適合直接放到程式碼內的機密資料。