在前面的篇幅,我們有提到如果希望能再不公開前,讓子模組互相使用到最新的更動,可以透過 npm link
的方式,將子模組彼此之前連結起來。
但是如果模組很多的話,每一次模組都要設定一次,而且 npm link
是針對你的本機做設定,所以即使你設定完後,其他使用到這些程式碼的人,也要做一樣的動作,這樣實在太難管理了,這時候我們就可以使用 yarn workspace 幫我們解決這些麻煩。
初始化專案
yarn init -y
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"]
}
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": {}
}
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