Skip to main content

[npm] Lerna 筆記

TL;DR#

# 初始化專案
lerna init
# 建立專案中的 packages
lerna create @pjchender/foo -y
# 進版
lerna version
# 針對所有 packages
lerna run build --parallel # 檢視執行時的訊息,類似 --stream
lerna run test --stream # 檢視執行時的訊息
# 針對單一 package
lerna run --scope packages/foo build
lerna add --dev uuid packages/foo # 安裝套件到某一個 package 內

CLI#

這裡的 packages 指的是 workspaces 內正在開發的專案:

$ lerna list # 列出所有 workspaces 中的 packages,alias: ls
$ lerna add <pkg> [globs...] # 將該套件安裝到符合 globs 的所有 packages 中
$ lerna link # 將所有相關連 packages link 在一起
$ lerna bootstrap # 將所有 packages link 在一起,並安裝對應的 dependencies
$ lerna clean # 清除所有 packages 中的 node_modules 資料夾
$ lerna run <script> # 在所有 packages 中,執行有該 script 的指令
$ lerna exec [cmd] [args...] # 在所有 packages 中執行該指令

建立 workspaces 中的 packages

lerna create <name>

針對 monorepos 中 package.json 設定要留意的地方#

針對 mono-repo 中 package.json 要留意修改的地方(可參考這個 commit #2c6bef):

@@ -1,22 +1,24 @@
{
"name": "@mono-sandbox/a",
"version": "0.0.0",
"description": "> TODO: description",
"author": "aaronchen <aaron.chen@onedegree.hk>",
"homepage": "",
"license": "ISC",
- "main": "lib/a.js",
+ "main": "dist/index.cjs.js",
+ "module": "dist/index.esm.js",
"directories": {
"lib": "lib",
"test": "__tests__"
},
"files": [
- "lib"
+ "dist"
],
"publishConfig": {
"access": "public"
},
"scripts": {
"build": "rollup -c ../../rollup.config.js",
"test": "echo \"Error: run tests from root\" && exit 1"
}
}
Last updated on