如何使用灭火器四个步骤(如何使用lerna进行多包(package)管理)
为什么要用lerna
将大型代码仓库分割成多个独立版本化的 软件包(package)对于代码共享来说非常有用 。但是 ,如果某些更改 跨越了多个代码仓库的话将变得很 麻烦 并且难以跟踪 ,并且 , 跨越多个代码仓库的测试将迅速变得非常复杂 。
为了解决这些(以及许多其它)问题 ,某些项目会将 代码仓库分割成多个软件包(package) ,并将每个软件包存放到独立的代码仓库中 。但是 ,例如 Babel 、 React 、Angular 、Ember 、Meteor 、Jest 等项目以及许多其他项目则是在 一个代码仓库中包含了多个软件包(package)并进行开发 。
Lerna 是一种工具 ,针对 使用 git 和 npm 管理多软件包代码仓库的工作流程进行优化
npm初始化
新建文件夹spring-breeze,在集成终端输入
npm init -y
根目录会生成package.json: { "name": "spring-breeze", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC" }安装lerna
全局安装lerna
执行:npm i lerna -g
安装完成后执行:lerna init
执行完成后后出现这样的目录结构 - packages(目录) - lerna.json(配置文件) - package.json(工程描述文件)初始化两个package
默认情况下 ,package是放在packages目录下的.创建包可以使用命令lerna create [loc]
lerna create core packages/core
lerna create core packages/tools将packages/core/lib/core.js改为:
use strict; console.log("我是core包~~")将packages/tools/lib/tools.js改为:
use strict; console.log("我是tools包~~")此时目录结构为
-- packages(目录) -- core ... -- lib -- core.js -- package.json -- README.md - tools ... -- lib -- tools.js -- package.json -- README.md - lerna.json(配置文件) - package.json(工程描述文件) ...修改包名
为了防止重名 ,包名一般改为@组织/包 ,如现在这个项目core应该改为:@spring-breeze/core;tools改为:@spring-breeze/tools
例如core模块:
packages/core/package.json: { "name": "@spring-breeze/core", "version": "0.0.1", "description": "> TODO: description", "author": "******", "homepage": "", "license": "ISC", "main": "lib/core.js", "directories": { "lib": "lib", "test": "__tests__" }, "files": [ "lib" ], "repository": { "type": "git", "url": "******" }, "scripts": { "test": "echo \"Error: run tests from root\" && exit 1" } }安装第三方包lerna add
添加公共依赖
在根目录下执行(在哪个目录执行都一样):lerna add lodash
此时会发现core和tools都被安装了lodash添加单独依赖
lerna add jquery --scope=core
core就会被安装了jquery删除依赖lerna clean
执行lerna clean会删除所有包中的node_modules
安装所有依赖lerna bootstrap
执行lerna bootstrap会重新安装所有依赖
测试本地包
如果本地开发的两个包有所关联 ,用lerna进行调试非常的简单 ,只需要将需要用的本地包版本号写入依赖执行:lerna link就可以了;例如在core模块使用tools模块
package添加依赖:"@spring-breeze/tools": "^0.0.1" { "name": "@spring-breeze/core", "version": "0.0.1", "description": "> TODO: description", "author": "******", "homepage": "", "license": "ISC", "main": "lib/core.js", "directories": { "lib": "lib", "test": "__tests__" }, "files": [ "lib" ], "repository": { "type": "git", "url": "******" }, "dependencies": { "@spring-breeze/tools": "^0.0.1" }, "scripts": { "test": "echo \"Error: run tests from root\" && exit 1" } }添加完成之后执行lerna link
core中使用:packages/core/lib/core.js use strict; require("@spring-breeze/tools")node执行core.js就会发现控制台打印:我是tools包~~ 。这样就可以进行本地的调试了
发布前准备
调试完成就可以发布了,发布流程如下:
注册npm账户 新建组织spring-breeze(根据自己项目而定) 执行npm login 分别在core和utils下的package.json中配置 "publishConfig": { "access": "public" } 新建gitignore *node_modules 新建git仓库,将项目git remote add "你的git仓库",并且提交项目至git仓库 git remote add https://gitee.com/geeksdidi/spring-breeze.git git add . git commit -m "初始化" git push -u origin master 新建LICENSE.md(可以是空文件) 修改一个文件执行 lerna publish注意:每次发布新版本之前都有将代码提交到git上
查看已发布的package
登陆npm官网 即可看到自己发布的package
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!