lerna是一個「一庫多包」的管理工具。
一庫多包:在一個倉庫中包括了多個代碼包。
這樣作能夠解決若干相關包的關聯/共享功能。還能夠跟蹤版本。npm
建立一個能夠輸出文本的包。json
mkdir lerna-demo1 cd lerna-demo1
運行結果如圖bootstrap
添加一個lerna管理的包(calc)。ide
lerna create calc lerna create pointer
編輯calc/lib/calc.js
爲以下代碼:工具
'use strict'; module.exports = { add: (a, b) => a + b, subtract: (a, b) => a - b, multiply: (a, b) => a * b, divide: (a, b) => a / b, }
編輯pointer/lib/calc.js
爲以下代碼:ui
'use strict'; let calc = require('calc') module.exports = { construct: (x, y) => { return {x, y} }, distance: (p0, p1) => { let x = calc.subtract(p0.x, p1.x) let y = calc.subtract(p0.y, p1.y) return Math.sqrt(calc.multiple(x, x), calc.multiple(y, y)) }, }
在clac
包中添加lodash
依賴包。spa
leran add lodash --scope=calc // 只在calc包中安裝lodash。在calc中就能夠使用lodash了。 lerna add calc // 在全部適合的包安裝calc.i該示例中只所pointer是適合的包。因calc不能依賴本身,因此它不是適合的包。
爲了展現該命令的使用方法,再建立一個lerna管理的包(line).code
lerna create line
編輯./packages/line/package.json
ip
... "dependencies": { "pointer": "^0.0.0" }
而後執行lerna boostrap
結果如圖ci
請執行npm login
登陸npm.
再執行
lerna publish from-package
而後會報錯。
lerna ERR! E403 You do not have permission to publish "calc". Are you logged in as the correct user?
緣由是當前開發的包名與已發佈的包名重複了。(想一個好包名太難。)請讀者把三個包中的名改成不重複的包名。再執行lerna publish from-package
。
而後就發佈成功了。
請刪除因運行本示例產生的包。npm unpublish <packagename> --force
.
lerna add | lerna bootstrap |
---|---|
把依賴項(本地來源或遠端來源)添加到package.json 中。 |
根據package.json 安裝依賴。 |