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