Skip to content

Latest commit

 

History

History
183 lines (136 loc) · 8.75 KB

README.zh-CN.md

File metadata and controls

183 lines (136 loc) · 8.75 KB

基于 Rust 的极速构建引擎

English | 简体中文

discord chat npm package node compatibility downloads license



介绍

Farm 是一个使用 Rust 编写的极速 Web 构建工具,兼容 Vite 插件生态。Farm 设计为极速、强大、一致的构建工具,旨在提供更好的 web 开发体验,是真正意义的下一代构建工具。

在线体验

Edit Farm

为什么选择 Farm?

详情请参阅Why Farm

总之,像 webpack 这样的工具太慢了,但像 Vite 这样的新工具也不完美,Vite 在大型项目上有很多缺点:

  • 开发过程中请求量巨大:当每个页面有成百上千个模块时,加载性能严重下降,刷新页面可能需要几秒或更长时间。
  • 开发和生产不一致:开发和生产使用不同的策略和工具,设计和实现上非常不一致,且难以调试线上问题。
  • 不灵活的代码分割:很难细粒度地控制产物的生成。

Farm 可以完美解决这些问题,而且速度非常快。 Farm 的目标是提供一个快速、一致、灵活的构建工具,这是真正的下一代构建工具。

特性

  • 从 0.13 版本起,Vite 插件可以直接在 Farm 中使用。参考 使用插件
  • 从 0.14 版本起,Farm 支持持久缓存。参考 增量构建
  • Farm 当前已经发布 1.0 稳定版本,可在生产环境使用,查看 官网 开始使用 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

详情查看 Benchmark.

贡献

查看 贡献指南

交流群


  • QQ 群


感谢贡献者们做出的努力




Contributors of farm-fe/farm New trends of farm-fe
Contributors of farm-fe/farm

致谢

感谢:

  • SWC 项目由@kdy1创建, 为 Farm 的代码解析、转换和压缩提供了支持。

  • NAPI-RS 项目由 @Brooooooklyn创建, 为 Farm 的 node-binding 实现提供了支持。

  • Rollup 项目由 @lukastaegert创建, 启发了 Farm 的插件系统的实现。

  • Vite 项目由 Evan You创建, 针对 Vite 插件生态的兼容性设计提供了启发。

作者 & 维护者

作者:

维护者: