入門lerna

overview

lerna是一個「一庫多包」的管理工具。
一庫多包:在一個倉庫中包括了多個代碼包。
這樣作能夠解決若干相關包的關聯/共享功能。還能夠跟蹤版本。npm

demo

overview

建立一個能夠輸出文本的包。json

init

mkdir lerna-demo1
cd lerna-demo1

運行結果如圖
bootstrap

create

添加一個lerna管理的包(calc)。ide

lerna create calc
lerna create pointer

edit

編輯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))
    },
}

add

clac包中添加lodash依賴包。spa

leran add lodash --scope=calc   // 只在calc包中安裝lodash。在calc中就能夠使用lodash了。
lerna add calc                  // 在全部適合的包安裝calc.i該示例中只所pointer是適合的包。因calc不能依賴本身,因此它不是適合的包。

bootstrap

爲了展現該命令的使用方法,再建立一個lerna管理的包(line).code

lerna create line

編輯./packages/line/package.jsonip

...
"dependencies": {
    "pointer": "^0.0.0"
}

而後執行
lerna boostrap
結果如圖
ci

publish

請執行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 bootsrap & lerna add

lerna add lerna bootstrap
把依賴項(本地來源或遠端來源)添加到package.json中。 根據package.json安裝依賴。
相關文章
相關標籤/搜索