Configurable, extensible build tools for modern single and multi-page web applications
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.
- Zero config by default. Check out this codesandbox template with react, postcss modules and no config.
- 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.
- Node 16+
- yarn 1.22 or higher
- npm 8.3 or higher
- Windows users must run bud.js under the Windows Subsystem for Linux.
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.
There are many example implementations available.
βΉ 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 theme.
Package name | Usage | Stable Release | Preview Release |
---|---|---|---|
@roots/bud-preset-recommend | π Docs | ||
@roots/bud-preset-wordpress | π Docs | ||
@roots/sage | π Docs |
βΉ 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 | π Docs | ||
@roots/bud-esbuild | π Docs | ||
@roots/bud-mdx | π README | ||
@roots/bud-postcss | π Docs | ||
@roots/bud-sass | π Docs | ||
@roots/bud-swc | π Docs | ||
@roots/bud-typescript | π Docs |
βΉ 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 | π README | ||
@roots/bud-criticalcss | π Docs | ||
@roots/bud-imagemin | π Docs | ||
@roots/bud-purgecss | π Docs |
βΉ These extensions provide support for popular application frameworks like React & Vue. Make sure to install a compatible compiler or preprocessor.
Name | README | Stable Release | Preview Release |
---|---|---|---|
@roots/bud-emotion | π Docs | ||
@roots/bud-react | π Docs | ||
@roots/bud-solid | π Docs | ||
@roots/bud-tailwindcss | π Docs | ||
@roots/bud-vue | π Docs |
βΉ 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.
Name | README | Stable Release | Preview Release |
---|---|---|---|
@roots/bud-eslint | π Docs | ||
@roots/bud-prettier | π README | ||
@roots/bud-stylelint | π Docs |
βΉ All of these extensions are included in @roots/bud-preset-wordpress.
Name | README | Stable Release | Preview Release |
---|---|---|---|
@roots/bud-tailwindcss-theme-json | π README | ||
@roots/bud-wordpress-dependencies | π README | ||
@roots/bud-wordpress-externals | π README | ||
@roots/bud-wordpress-theme-json | π README |
βΉ 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 | π README | |
bud-localtunnel | π README | |
bud-wp-editor-query | π README |
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 and the source code of the extensions in this repository.
βΉ @roots/bud is actually made up of a number of packages. You only need to install
@roots/bud
to use bud.js.
βΉ 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.
Contributions are welcome from everyone.
We have contribution guidelines to help you get started.
bud.js is licensed under MIT.
Keep track of development and community news.
- Join us on Roots Slack by becoming a GitHub sponsor
- Participate on the Roots Discourse
- Follow @rootswp on Twitter
- Read and subscribe to the Roots Blog
- Subscribe to the Roots Newsletter
Bud is an open source project and completely free to use.
However, the amount of effort needed to maintain and develop new features and projects within the Roots ecosystem is not sustainable without proper financial backing. If you have the capability, please consider sponsoring Roots.