Skip to content

🎉 基于 Umi4 架构,提供基础库开发工作流的解决方案。

License

Notifications You must be signed in to change notification settings

walrusjs/redbud

Repository files navigation

Redbud

基于 Umi4 架构,提供基础库开发工作流的解决方案。

注意: 本项目主要参考 father@4 的代码实现,并在其中加入自己对基础库开发工作流的一些理解。

经过对目前主流的一些基础库(组件库/工具库等)和打包工具(webpack/rollup/esbuild等)的的研究,得出如何结论:

  1. 编译模式主要分为以下两种
  • Bundle: 将所有文件打包进一个文件;
  • Bundless: 目录对目录;
  1. 编译格式主要分为以下三种
  • esm
  • cjs
  • umd

以 React 技术栈有名的 antd 组件库为例,打包输出目录为 eslibdist 就分别用到了上述两种编译模式

  • eslib 采用的就是 Bundless 模式;
  • dist 采用的就是 Bundle 模式;

father@3 为例,就提供了 babelrollup 两种模式供用户选择。(babel就相当于Bundless模式;rolup就相当于Bundle模式)

基于多年开源开发经验,一个好的打包工具应具备如下特性:

  • 能够同时支持 esmcjsumd 三种编译格式
  • esmcjs 使用 Bundless 编译模式
  • umd 使用 Bundle 编译模式
  • 能够处理组件库和工具库的所有打包场景

✨ 特性

  • 📦 依赖预打包 基于 ncc(打包文件)+ dts-packer(生成类型)
  • ⚔️ 双模式构建
    • Bundle 模式:仅 UMD 产物走 bundle 模式,核心为 webpack
    • Bundless 模式:仅 ESM 产物走 bundless 模式,默认提供 babel(browser)+ esbuild(node)双编译核心,可基于插件系统注册 swc/tsc 模式

🏗 安装

# npm 
$ npm install redbud --save -D

# yarn
$ yarn add redbud -D

# pnpm
$ pnpm i redbud -D

Cli

version

查看 redbud 的版本

$ redbud version

build

About

🎉 基于 Umi4 架构,提供基础库开发工作流的解决方案。

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages