开发技巧
- 各个包管理器之间的差异和演化过程。
参考链接:
总结:monorepo (单体仓库)用于解决多个项目之间相互调用、存在大量重复依赖的问题。
当项目(Project)中相互调用时,通常情况下我们会将需要修改的包 yarn link 到本地,在本地修改再推送到 npm 服务器,这样的开发挺麻烦的,所以通过单体仓库管理,项目之间通过软连接到本地,直接进行修改不用 link 。
当多个项目之间存在大量重复依赖,使用单体仓库管理可以将依赖提升到工作区根目录,这样做的好处有两点:
1. 可以节约磁盘空间,提高依赖安装速度。因为同样的依赖只会被安装一次
2. 通过工作区根目录的 yarn-lock 文件统一管理,减小依赖之间产生冲突的可能性。
- bunchee 一个基于 Rollup 的零配置打包库,支持 ts、jsx。
在开发库的时候,用 webpack 、vite 太重。使用一些轻量的打包工具挺有必要的。bunchee 就是这样一个库打包工具。主打的就是一个轻量。
{
"main": "dist/pkg.cjs.js",
"module": "dist/pkg.esm.js",
"scripts": {
"build": "bunchee ./src/index.js"
},
"types": "dist/types/index.d.ts"
}
在 package.json
中配置好 main
和 module
字段,前者是 commonJs 规范的代码入口,后者是 ESM 规范的代码入口。
也可以通过 exports
字段声明:
{
"exports": {
"require": "dist/index.cjs",
"import": "dist/index.mjs",
"module": "dist/index.esm.js"
},
"scripts": {
"build": "bunchee ./src/index.js"
},
}