Farm 是一个使用 Rust 编写的极速 Web 构建工具,兼容 Vite 插件生态。Farm 设计为极速、强大、一致的构建工具,旨在提供更好的 web 开发体验,是真正意义的下一代构建工具。
详情请参阅Why Farm。
总之,像 webpack 这样的工具太慢了,但像 Vite 这样的新工具也不完美,Vite 在大型项目上有很多缺点:
- 开发过程中请求量巨大:当每个页面有成百上千个模块时,加载性能严重下降,刷新页面可能需要几秒或更长时间。
- 开发和生产不一致:开发和生产使用不同的策略和工具,设计和实现上非常不一致,且难以调试线上问题。
- 不灵活的代码分割:很难细粒度地控制产物的生成。
Farm 可以完美解决这些问题,而且速度非常快。 Farm 的目标是提供一个快速、一致、灵活的构建工具,这是真正的下一代构建工具。
- ⚡ 超级快: 使用 Rust 编写, 可以在毫秒级别内启动一个 React 或 Vue 项目。 在大多数情况下, 可以在 10ms 内执行 HMR 的更新。
- ⚡ 增量构建: 支持持久缓存,以模块粒度进行缓存复用,任何一个模块如果没有改变,始终只会编译一次!
- 🧰 完全可插拔: Farm 由插件驱动, 兼容 Vite 插件,同时支持 Farm 编译插件(Rust 和 JavaScript 插件,以及 Swc 插件),Farm Runtime 插件,Farm Dev Server 插件。
- ⚙️ 丰富的编译能力支持: 开箱即用, Farm 内置了 JS/TS/JSX/TSX、CSS、Css Modules、Sass、Less、Postcss,HTML 和静态资源的编译,为 React,Vue,Solid 等框架提供了官方插件。
- ⏱️ 懒编译: 仅仅在请求时才编译动态导入的资源,极大提速大型项目的编译。通过
dynamic import
即可启用,被dynamic import
的模块及其依赖仅在使用时才会编译。 - 📦 局部打包: 自动根据依赖关系、资源大小,将项目打包成若干个资源,提升资源加载性能的同时,保证缓存命中率。参考 RFC-003 Partial Bundling
- 🔒 一致性: 开发环境和生产环境的表现一致,所见即所得。
- 🌳 兼容性: 同时支持传统(ES5)和现代浏览器。
目前 Farm 已经实现了构建引擎的所有能力,包括生产环境优化如 Tree Shake、压缩、Polyfill 等,并且 Farm 已经发布了 1.0 版本。已有企业级项目迁移到 Farm,并且效果非常好!
Farm 设计动机和理念请看 RFC-001。
使用任意常用包管理器,即可快速创建一个 Farm 项目:
# npm
npm create farm@latest
# yarn
yarn create farm@latest
# pnpm
pnpm create farm@latest
查看 Farm 文档 了解更多用法。
Farm 远快于业界常用的 JS 构建工具,在 benchmark 测试中,Farm 比 Webpack 快 20 倍,比 Vite 快 10 倍:
详情查看 Benchmark.
查看 贡献指南
- QQ 群
|
|
---|---|
|
|
|
感谢:
-
NAPI-RS 项目由 @Brooooooklyn创建, 为 Farm 的 node-binding 实现提供了支持。
-
Rollup 项目由 @lukastaegert创建, 启发了 Farm 的插件系统的实现。
作者:
- brightwu(吴明亮),, 曾就职于字节跳动。推特
维护者: