乐趣区

关于工程化:入门lerna

overview

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

demo

overview

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

init

mkdir lerna-demo1
cd lerna-demo1

运行后果如图

create

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

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

'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 add lerna bootstrap
把依赖项(本地起源或远端起源)增加到 package.json 中。 依据 package.json 装置依赖。
退出移动版