https://github.com/roots/bud
Build tool that wraps webpack complexity behind an elegant, minimal API
https://github.com/roots/bud
babel build-tool esbuild eslint hmr postcss react sass stylelint typescript vue webpack
Last synced: about 8 hours ago
JSON representation
Build tool that wraps webpack complexity behind an elegant, minimal API
- Host: GitHub
- URL: https://github.com/roots/bud
- Owner: roots
- License: mit
- Created: 2020-06-13T07:56:37.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2025-02-28T18:41:01.000Z (3 months ago)
- Last Synced: 2025-05-10T05:02:03.750Z (5 days ago)
- Topics: babel, build-tool, esbuild, eslint, hmr, postcss, react, sass, stylelint, typescript, vue, webpack
- Language: TypeScript
- Homepage: https://bud.js.org/
- Size: 225 MB
- Stars: 348
- Watchers: 9
- Forks: 43
- Open Issues: 18
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
- Security: SECURITY.md
Awesome Lists containing this project
README
![]()
![]()
bud.js
Configurable, extensible build tools for modern single and multi-page web applications---
## Goals
**bud.js** wants to be:
- **Reliable**, yielding consistent and predictable behaviors regardless of specified options.
- **Fast**, leveraging parallel processing, smart caching and an asyncronous events based API to keep build times minimal.
- **Extensible**, with a fully featured plugin system to support an ecosystem of packaged modules.
- **Simple**, to get started and straight forward to maintain.## Features
- Zero config by default. Check out this [codesandbox template with react, postcss modules and no config](https://codesandbox.io/s/bud-zero-config-or4tby).
- Modular by design. Use only what you need.
- Multi-compiler support.
- Heckinβ fast.
- Lux developer tooling and semi-automated dependency management.
- Support for configuration files authored with TypeScript, JSON, YML, CJS and ESM.
- Support for CDNs like skypack and unpkg.
- Customizable and extensible.## Requirements
- Node 16+
- yarn 1.22 or higher
- npm 8.3 or higher
- Windows users must run **bud.js** under the Windows Subsystem for Linux.## Getting started
Quickly scaffold a new project with `create-bud-app`:
> npx create-bud-app
If you want to add bud.js to an existing project or want to further customize the scaffolded app check out the [Getting Started guide](https://bud.js.org/learn/getting-started).
There are [many example implementations available](https://github.com/roots/bud/tree/master/examples).
## Modules
### Presets
> βΉ Presets are a collection of extensions which are commonly used together. There are currently three presets: our general preset, a WordPress specific preset, and the preset used in the [roots/sage](https://github.com/roots/sage) theme.
| Package name | Usage | Stable Release | Preview Release |
| :------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------- |
| [**@roots/bud-preset-recommend**](https://github.com/roots/bud/tree/main/sources/@roots/bud-preset-recommend) | [π Docs](https://bud.js.org/extensions/bud-preset-recommend) |  |  |
| [**@roots/bud-preset-wordpress**](https://github.com/roots/bud/tree/main/sources/@roots/bud-preset-wordpress) | [π Docs](https://bud.js.org/extensions/bud-preset-wordpress) |  |  |
| [**@roots/sage**](https://github.com/roots/bud/tree/main/sources/@roots/sage) | [π Docs](https://bud.js.org/extensions/sage) |  |  |### Extensions
#### Language support & module preprocessors
> βΉ These extensions provide support for languages and syntaxes which are not understood by the browser and require compilation.
| Name | README | Stable Release | Preview Release |
| :------------------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------- |
| [**@roots/bud-babel**](https://github.com/roots/bud/tree/main/sources/@roots/bud-babel) | [π Docs](https://bud.js.org/extensions/bud-babel) |  |  |
| [**@roots/bud-esbuild**](https://github.com/roots/bud/tree/main/sources/@roots/bud-esbuild) | [π Docs](https://bud.js.org/extensions/bud-esbuild) |  |  |
| [**@roots/bud-mdx**](https://github.com/roots/bud/tree/main/sources/@roots/bud-mdx) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/bud-mdx/README.md) |  |  |
| [**@roots/bud-postcss**](https://github.com/roots/bud/tree/main/sources/@roots/bud-postcss) | [π Docs](https://bud.js.org/extensions/bud-postcss) |  |  |
| [**@roots/bud-sass**](https://github.com/roots/bud/tree/main/sources/@roots/bud-sass) | [π Docs](https://bud.js.org/extensions/bud-sass) |  |  |
| [**@roots/bud-swc**](https://github.com/roots/bud/tree/main/sources/@roots/bud-swc) | [π Docs](https://bud.js.org/extensions/bud-swc) |  |  |
| [**@roots/bud-typescript**](https://github.com/roots/bud/tree/main/sources/@roots/bud-typescript) | [π Docs](https://bud.js.org/extensions/bud-typescript) |  |  |#### Optimization
> βΉ These extensions optimize compiled code and static assets to help ensure a high quality user experience in your app. They are typically only run in `production` mode.
| Name | README | Stable Release | Preview Release |
| :-------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------- |
| [**@roots/bud-compress**](https://github.com/roots/bud/tree/main/sources/@roots/bud-compress) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/bud-compress/README.md) |  |  |
| [**@roots/bud-criticalcss**](https://github.com/roots/bud/tree/main/sources/@roots/bud-criticalcss) | [π Docs](https://bud.js.org/extensions/bud-criticalcss) |  |  |
| [**@roots/bud-imagemin**](https://github.com/roots/bud/tree/main/sources/@roots/bud-imagemin) | [π Docs](https://bud.js.org/extensions/bud-imagemin) |  |  |
| [**@roots/bud-purgecss**](https://github.com/roots/bud/tree/main/sources/@roots/bud-purgecss) | [π Docs](https://bud.js.org/extensions/bud-purgecss) |  |  |#### Features and framework support
> βΉ These extensions provide support for popular application frameworks like React & Vue. Make sure to install [a compatible compiler or preprocessor](#language-support--module-preprocessors).
| Name | README | Stable Release | Preview Release |
| :-------------------------------------------------------------------------------------------------- | :------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------- |
| [**@roots/bud-emotion**](https://github.com/roots/bud/tree/main/sources/@roots/bud-emotion) | [π Docs](https://bud.js.org/extensions/bud-emotion) |  |  |
| [**@roots/bud-react**](https://github.com/roots/bud/tree/main/sources/@roots/bud-react) | [π Docs](https://bud.js.org/extensions/bud-react) |  |  |
| [**@roots/bud-solid**](https://github.com/roots/bud/tree/main/sources/@roots/bud-solid) | [π Docs](https://bud.js.org/extensions/bud-solid) |  |  |
| [**@roots/bud-tailwindcss**](https://github.com/roots/bud/tree/main/sources/@roots/bud-tailwindcss) | [π Docs](https://bud.js.org/extensions/bud-tailwindcss) |  |  |
| [**@roots/bud-vue**](https://github.com/roots/bud/tree/main/sources/@roots/bud-vue) | [π Docs](https://bud.js.org/extensions/bud-vue) |  |  |#### Code quality
> βΉ These extensions ensure source code conforms to a specified style. Linting configuration is expected to be provided by the user, but a base eslint config is available: [@roots/eslint-config](https://npmjs.org/package/@roots/eslint-config).
| Name | README | Stable Release | Preview Release |
| :---------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------- |
| [**@roots/bud-eslint**](https://github.com/roots/bud/tree/main/sources/@roots/bud-eslint) | [π Docs](https://bud.js.org/extensions/bud-eslint) |  |  |
| [**@roots/bud-prettier**](https://github.com/roots/bud/tree/main/sources/@roots/bud-prettier) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/bud-prettier/README.md) |  |  |
| [**@roots/bud-stylelint**](https://github.com/roots/bud/tree/main/sources/@roots/bud-stylelint) | [π Docs](https://bud.js.org/extensions/bud-stylelint) |  |  |#### WordPress specific
> βΉ All of these extensions are included in [@roots/bud-preset-wordpress](https://bud.js.org/extensions/bud-preset-wordpress).
| Name | README | Stable Release | Preview Release |
| :------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------- |
| [**@roots/bud-tailwindcss-theme-json**](https://github.com/roots/bud/tree/main/sources/@roots/bud-tailwindcss-theme-json) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/bud-tailwindcss-theme-json/README.md) |  |  |
| [**@roots/bud-wordpress-dependencies**](https://github.com/roots/bud/tree/main/sources/@roots/bud-wordpress-dependencies) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/bud-wordpress-dependencies/README.md) |  |  |
| [**@roots/bud-wordpress-externals**](https://github.com/roots/bud/tree/main/sources/@roots/bud-wordpress-externals) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/bud-wordpress-externals/README.md) |  |  |
| [**@roots/bud-wordpress-theme-json**](https://github.com/roots/bud/tree/main/sources/@roots/bud-wordpress-theme-json) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/bud-wordpress-theme-json/README.md) |  |  |### Community extensions
> βΉ The following extensions are maintained by the community. Please refrain from making issues in this repo regarding these extensions.
| Name | README | Stable Release |
| :------------------------------------------------------------------------ | :------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------- |
| [**bud-embedded**](https://github.com/talss89/bud-embedded) | [π README](https://github.com/talss89/bud-embedded/tree/main/README.md) |  |
| [**bud-localtunnel**](https://github.com/talss89/bud-localtunnel) | [π README](https://github.com/talss89/bud-localtunnel/tree/main/README.md) |  |
| [**bud-wp-editor-query**](https://github.com/talss89/bud-wp-editor-query) | [π README](https://github.com/talss89/bud-wp-editor-query/tree/main/README.md) |  |Have you produced a bud.js extension and want to share it here? Please, create an issue sharing information about your project.
For more information on authoring your own extension [consult the documentation](https://bud.js.org/learn/extending/) and the source code of the extensions in this repository.
### Core modules
> βΉ [@roots/bud](https://github.com/roots/bud/tree/main/sources/@roots/bud) is actually made up of a number of packages. **You only need to install `@roots/bud` to use bud.js.**
| Package name | Usage | Stable Release | Preview Release |
| :-------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------- |
| [**@roots/bud**](https://github.com/roots/bud/tree/main/sources/@roots/bud) | [π Docs](https://bud.js.org/learn/getting-started) |  |  |
| [**@roots/bud-api**](https://github.com/roots/bud/tree/main/sources/@roots/bud-api) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/bud-api/README.md) |  |  |
| [**@roots/bud-build**](https://github.com/roots/bud/tree/main/sources/@roots/bud-build) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/bud-build/README.md) |  |  |
| [**@roots/bud-cache**](https://github.com/roots/bud/tree/main/sources/@roots/bud-cache) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/bud-cache/README.md) |  |  |
| [**@roots/bud-client**](https://github.com/roots/bud/tree/main/sources/@roots/bud-client) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/bud-client/README.md) |  |  |
| [**@roots/bud-compiler**](https://github.com/roots/bud/tree/main/sources/@roots/bud-compiler) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/bud-compiler/README.md) |  |  |
| [**@roots/bud-dashboard**](https://github.com/roots/bud/tree/main/sources/@roots/bud-dashboard) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/bud-dashboard/README.md) |  |  |
| [**@roots/bud-entrypoints**](https://github.com/roots/bud/tree/main/sources/@roots/bud-entrypoints) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/bud-entrypoints/README.md) |  |  |
| [**@roots/bud-extensions**](https://github.com/roots/bud/tree/main/sources/@roots/bud-extensions) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/bud-extensions/README.md) |  |  |
| [**@roots/bud-framework**](https://github.com/roots/bud/tree/main/sources/@roots/bud-framework) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/bud-framework/README.md) |  |  |
| [**@roots/bud-hooks**](https://github.com/roots/bud/tree/main/sources/@roots/bud-hooks) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/bud-hooks/README.md) |  |  |
| [**@roots/bud-minify**](https://github.com/roots/bud/tree/main/sources/@roots/bud-minify) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/bud-minify/README.md) |  |  |
| [**@roots/bud-server**](https://github.com/roots/bud/tree/main/sources/@roots/bud-server) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/bud-server/README.md) |  |  |
| [**@roots/bud-support**](https://github.com/roots/bud/tree/main/sources/@roots/bud-support) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/bud-support/README.md) |  |  |### Support modules
> βΉ These packages are not specific to bud.js but are used by the framework. They could be used in other projects outside of the context of bud.js.
| Name | README | Stable Release | Preview Release |
| :---------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------- |
| [**@roots/blade-loader**](https://github.com/roots/bud/tree/main/sources/@roots/blade-loader) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/blade-loader/README.md) |  |  |
| [**@roots/browserslist-config**](https://github.com/roots/bud/tree/main/sources/@roots/browserslist-config) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/browserslist-config/README.md) |  |  |
| [**@roots/container**](https://github.com/roots/bud/tree/main/sources/@roots/container) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/container/README.md) |  |  |
| [**@roots/critical-css-webpack-plugin**](https://github.com/roots/bud/tree/main/sources/@roots/critical-css-webpack-plugin) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/critical-css-webpack-plugin/README.md) |  |  |
| [**@roots/dependencies**](https://github.com/roots/bud/tree/main/sources/@roots/dependencies) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/dependencies/README.md) |  |  |
| [**@roots/entrypoints-webpack-plugin**](https://github.com/roots/bud/tree/main/sources/@roots/entrypoints-webpack-plugin) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/entrypoints-webpack-plugin/README.md) |  |  |
| [**@roots/eslint-config**](https://github.com/roots/bud/tree/main/sources/@roots/eslint-config) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/eslint-config/README.md) |  |  |
| [**@roots/filesystem**](https://github.com/roots/bud/tree/main/sources/@roots/filesystem) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/filesystem/README.md) |  |  |
| [**@roots/wordpress-dependencies-webpack-plugin**](https://github.com/roots/bud/tree/main/sources/@roots/wordpress-dependencies-webpack-plugin) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/wordpress-dependencies-webpack-plugin/README.md) |  |  |
| [**@roots/wordpress-externals-webpack-plugin**](https://github.com/roots/bud/tree/main/sources/@roots/wordpress-externals-webpack-plugin) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/wordpress-externals-webpack-plugin/README.md) |  |  |
| [**@roots/wordpress-hmr**](https://github.com/roots/bud/tree/main/sources/@roots/wordpress-hmr) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/wordpress-hmr/README.md) |  |  |
| [**@roots/wordpress-theme-json-webpack-plugin**](https://github.com/roots/bud/tree/main/sources/@roots/wordpress-theme-json-webpack-plugin) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/wordpress-theme-json-webpack-plugin/README.md) |  |  |
| [**@roots/wordpress-transforms**](https://github.com/roots/bud/tree/main/sources/@roots/wordpress-transforms) | [π README](https://github.com/roots/bud/tree/main/sources/@roots/wordpress-transforms/README.md) |  |  |## License
bud.js is licensed under MIT.