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 安装依赖。 |