overview

lerna是一个“一库多包”的管理工具。
一库多包:在一个仓库中包含了多个代码包。
这样做能够解决若干相干包的关联/共享性能。还能够跟踪版本。

demo

overview

创立一个能够输入文本的包。

init

mkdir lerna-demo1cd lerna-demo1

运行后果如图

create

增加一个lerna治理的包(calc)。

lerna create calclerna 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为如下代码:

'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依赖包。

leran add lodash --scope=calc   // 只在calc包中装置lodash。在calc中就能够应用lodash了。lerna add calc                  // 在所有适宜的包装置calc.i该示例中只所pointer是适宜的包。因calc不能依赖本人,所以它不是适宜的包。

bootstrap

为了展现该命令的应用办法,再创立一个lerna治理的包(line).

lerna create line

编辑./packages/line/package.json

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

而后执行
lerna boostrap
后果如图

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 addlerna bootstrap
把依赖项(本地起源或远端起源)增加到package.json中。依据package.json装置依赖。