初始化项目
yarn init -y
添加workspaces 支持
修改package.json
{"name": "second","version": "1.0.0","main": "index.js","license": "MIT","private":true,"workspaces":["common","server"]}
创建common && server 模块
- common
yarn init -y├── index.js└── package.jsonindex.jsmodule.exports={name:"dalong-common",type:"common"}
- server 调用common
yarn init -y├── index.js└── package.jsonpackage.json{"name": "server","version": "1.0.0","main": "index.js","license": "MIT","dependencies": {"common": "1.0.0"}}index.jsconst common =require("common");console.log(common);
安装模块
yarn install
效果
![](https://images2018.cnblogs.com/blog/562987/201807/562987-20180706102211685-1512904205.png)
代码调用测试
node server{ name: 'dalong-common', type: 'common' }
lerna 格式支持
- 项目结构
├── package.json├── packages│ ├── common│ │ ├── index.js│ │ └── package.json│ └── server│ ├── index.js│ └── package.json└── yarn.lock主要是 package.json{"name": "second","version": "1.0.0","main": "index.js","license": "MIT","private":true,"workspaces":["packages/*"]}以及packages 文件夹,其他地方不变yarn install && node packages/server
几个问题
- 包版本的问题
比如我的项目comon 默认是1.0.0 但是如果我server 引用了1.1.0 ,但是因为本地是没有的,会使用官方仓库的,这个实际上,在使用中还是要确定好版本,同时还是需要私服进行归档进行历史版本的管理,确定好包的名称,使用私服格式
说明
版本管理本来就是比较复杂的事情,类似yarn 的有lerna 同时又一个概念monorepo,bable react 就是使用类似的方式进行官方组件的维护的,还是不错的,减少了包的问题但是也有缺点,就是依赖过大,总的来说yarn 还是比较简单的,lerna 功能比较多,但是实际上内部团队用的可能没有那么多,同时比较好的地方是三方以及本地依赖统一一个地方,依赖包不用必须提交代码仓库
参考资料