iT邦幫忙

2024 iThome 鐵人賽

DAY 23
0
自我挑戰組

讓我們一起與turboRepo共舞系列 第 23

在 Monorepo 中捆綁(Bundling)和發布套件的指南

  • 分享至 

  • xImage
  •  
  1. 在 Monorepo 中捆綁套件
    設定建置腳本:使用捆綁工具(如 tsup)將套件捆綁成 CommonJS 格式,方便在 npm 上發布和本地使用。
// packages/math-helpers/package.json
{
  "scripts": {
    "build": "tsup src/index.ts --format cjs --dts"
  }
}

配置 Turborepo:將 dist 資料夾添加到 .gitignore,並在 turbo.json 中的 build 任務中指定輸出。

// turbo.json
{
  "pipeline": {
    "build": {
      "outputs": ["dist/**"]
    }
  }
}

更新套件的入口點:在 package.json 中將 main 指向 ./dist/index.js,types 指向 ./dist/index.d.ts。

// packages/math-helpers/package.json
{
  "main": "./dist/index.js",
  "types": "./dist/index.d.ts"
}

設定任務依賴:使用 dependsOn 確保在執行 build 任務時,先建置套件再建置應用程式。

// turbo.json
{
  "pipeline": {
    "build": {
      "dependsOn": ["^build"]
    }
  }
}

設定開發腳本:為套件添加 dev 腳本,以便在開發過程中監聽文件變化並自動重建。

// packages/math-helpers/package.json
{
  "scripts": {
    "build": "tsup src/index.ts --format cjs --dts",
    "dev": "npm run build --watch"
  }
}
  1. 在 Monorepo 中版本控制和發布套件
    使用 Changesets CLI:簡化多套件版本控制和發布流程。

Changesets 常用指令:

添加新的變更集

changeset

為套件創建新版本

changeset version

將所有更改的套件發布到 npm

changeset publish
整合發布流程:在根目錄的 package.json 中添加 publish-packages 腳本,整合建置、測試和發布流程。

// package.json
{
  "scripts": {
    "publish-packages": "turbo run build lint test && changeset version && changeset publish"
  }
}
  1. 設定 tsup 建置腳本
// packages/math-helpers/package.json
{
  "scripts": {
    "build": "tsup src/index.ts --format cjs --dts"
  }
}
  1. 更新 turbo.json 以包含輸出
// turbo.json
{
  "pipeline": {
    "build": {
      "outputs": ["dist/**"]
    }
  }
}
  1. 更新套件的 package.json
// packages/math-helpers/package.json
{
  "main": "./dist/index.js",
  "types": "./dist/index.d.ts"
}
  1. 添加任務依賴以確保正確的建置順序
// turbo.json
{
  "pipeline": {
    "build": {
      "dependsOn": ["^build"]
    }
  }
}
  1. 添加開發腳本以監聽文件變化
// packages/math-helpers/package.json
{
  "scripts": {
    "build": "tsup src/index.ts --format cjs --dts",
    "dev": "npm run build --watch"
  }
}
  1. 在根目錄添加發布腳本
// package.json
{
  "scripts": {
    "publish-packages": "turbo run build lint test && changeset version && changeset publish"
  }
}

上一篇
turboRepo 單一儲存庫設置
下一篇
Turborepo 指令講解
系列文
讓我們一起與turboRepo共舞30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言