iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 17
1

在前面的篇幅,我們有提到如果希望能再不公開前,讓子模組互相使用到最新的更動,可以透過 npm link 的方式,將子模組彼此之前連結起來。

但是如果模組很多的話,每一次模組都要設定一次,而且 npm link 是針對你的本機做設定,所以即使你設定完後,其他使用到這些程式碼的人,也要做一樣的動作,這樣實在太難管理了,這時候我們就可以使用 yarn workspace 幫我們解決這些麻煩。

完整範例

初始化專案

yarn init -y

設定 workspace root

package.js

{
  "name": "yarn-workspaces-example",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "private": true,
  "workspaces": ["app-api-server", "app-socket-server", "app-core"]
}

建立 app-core

mkdir app-core
touch app-core/index.js
touch app-core/package.js

編輯 app-core/index.js 檔

function hello() {
  return 'Hello World'
}

module.exports = {
  hello,
}

編輯 app-core/package.js 檔

{
  "name": "app-core",
  "version": "1.0.0",
  "main": "index.js",
  "dependencies": {}
}

建立 app-api-server

mkdir app-api-server
touch app-api-server/index.js
touch app-api-server/package.js
yarn workspace app-api-server add koa

編輯 app-api-server/index.js 檔

const appCore = require('app-core')
const Koa = require('koa')
const app = new Koa()

app.use(async (ctx) => {
  ctx.body = appCore.hello()
})

app.listen(3000)

編輯 app-api-server/package.js 檔

{
  "name": "app-api-server",
  "version": "1.0.0",
  "main": "index.js",
  "dependencies": {
    "koa": "^2.8.1"
  }
}

啟動 API server

node app-api-server/index.js

資料來源 / 延伸閱讀


上一篇
Day16 - 管理原始碼的解決方案 Monorepo 和 Polyrepo
下一篇
Day18 - lerna.js 基本操作
系列文
模組化設計30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言