tsdx - 快速建立 npm 套件樣板的CLI工具

on 2021-12-09

之前的文章使用 TypeScript 建立 Express.js,需要快速建立 npm 套件,所以在 GitHub 上尋找有沒有方便的套件,結果發現到了 tsdx,這個方便的 CLI 工具。

建立

npx tsdx create mylib

按照文件的說明,直接執行npx tsdx create <package name>,馬上建立好從開發、測試到部署全部都設定完成的樣版,節省了很多前期整合各種套件的時間。

所選擇的樣板是 'basic',會建立如下圖的目錄架構。

微調的項目

但是實際開發後,發現還是需要一些調整才行,以下會介紹。

tsconfig.json

因為開發的套件stools有使用到 DI 的機制,而使用的套件是 typeDi ,而且會用到 Decorator 的功能,因此需要在 tsconfig.json 加上以下設定。

"emitDecoratorMetadata": true,
"experimentalDecorators": true,

測試

測試方面是使用 Jest ,有 React 的背景的人,應該很多都有使用過,而這是我第一次使用 Jest 來進行測試。當測試執行完畢,會直接顯示詳細的測試資訊,如同上圖,這部份有讓我有點驚艷到,就連未測試的程式行數也會顯示。

// jest.config.js
module.exports = {
  verbose: true,
  testEnvironment: 'node',
  collectCoverage: true,
  coverageDirectory: 'coverage',
  collectCoverageFrom: ['src/**/*.{js,ts}', '!<rootDir>/node_modules/'],
};

但是還有需要調整的地方,預設是沒有加入 jest.config.js 的,而這次建立的套件stools是運行在 node.js 環境上的,所以執行測試時會發生錯誤,所以指定testEnvironment為 node 即可,並且參考其他專案的設定,也一併設定需顯示測試的覆蓋度。

建置(build)

建置是與 Rollup 整合,當執行npm run build ,也就會執行tsdx build --target node

這邊也是一段指令執行完,就會產生可以部署至 npm 的相關檔案,如大部份網站的慣列,預設是放在dist

結論

如果想快速開發 npm package 時,使用 tsdx 已經整合各種建立套件所需的工具,所以只需將時間放在建立套件的程式上即可,減少很多前置的時間,請大家參考看看。