-
Notifications
You must be signed in to change notification settings - Fork 0
ADR‐001: Choosing a Build Tool for Our Static Website Using React
- Status: Proposed
- Deciders: @kravalg, @TuranC, @vlas-pravsha
- Date: 2024-07-01
Technical Story: This decision is driven by the need to choose an efficient and reliable build tool for our front-end development process, which will significantly impact the build speed and development experience.
In the development of our static website using React, we need to decide on a build tool. The build tool we choose will impact our development speed, build times, and overall developer experience. The primary contenders are Vite, esbuild, and Webpack.
- Performance: The tool should provide fast build times and efficient handling of large codebases.
- Developer Experience: Ease of setup, intuitive configuration, and hot module replacement (HMR) capabilities.
- Ecosystem: Support for plugins, integrations, and community resources.
- Vite
- esbuild
- Webpack
Vite is a modern build tool that leverages native ES modules in the browser and utilizes esbuild for extremely fast builds. It is designed with a focus on performance and developer experience.
- Good, because it provides extremely fast build times by leveraging esbuild for pre-bundling dependencies.
- Good, because it offers an excellent developer experience with minimal configuration and powerful HMR.
- Good, because it has a rapidly growing ecosystem with a focus on modern front-end development practices.
- Bad, because it is a newer tool with potentially fewer mature plugins and resources compared to Webpack.
- Bad, because transitioning from Webpack to Vite may require an adjustment period for developers.
esbuild is a JavaScript bundler written in Go, known for its speed and performance. It is designed to be simple and efficient, making it a popular choice for custom build setups.
- Good, because it is extremely fast, with build speeds significantly faster than traditional bundlers.
- Good, because it provides a simple API for integrating into custom build setups.
- Bad, because it has a smaller ecosystem and fewer built-in features compared to Vite and Webpack.
- Bad, because it lacks advanced features and plugin support, which may require additional configuration and development effort.
Webpack is a mature and widely-used build tool with a large ecosystem. It is highly configurable and capable of handling complex build setups.
- Good, because it has a large and mature ecosystem with extensive plugin support.
- Good, because of its flexibility and ability to handle complex build configurations.
- Bad, because it can be slow, especially for large codebases and during incremental builds.
- Bad, because its configuration can be complex and challenging for new developers to understand.
To be determined based on further evaluation of the project requirements and constraints
- Vite: https://vitejs.dev/
- esbuild: https://esbuild.github.io/
- Webpack: https://webpack.js.org/
- Wiki page: https://github.com/VilnaCRM-Org/ui-toolkit/wiki