yarn workspaces基本试用
初始化项目
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.json index.js module.exports={ name:"dalong-common", type:"common" }
- server 调用common
yarn init -y ├── index.js └── package.json package.json { "name": "server", "version": "1.0.0", "main": "index.js", "license": "MIT", "dependencies": { "common": "1.0.0" } } index.js const common =require("common"); console.log(common);
安装模块
yarn install
效果
代码调用测试
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 功能比较多,但是 实际上内部团队用的可能没有那么多,同时比较好的地方是三方以及本地依赖统一一个地方,依赖包 不用必须提交代码仓库