Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@roots/ink-use-style

roots9MIT5.8.7TypeScript support: included

Themes and styles for React Ink

ink

readme

Bud

MIT License npm Follow Roots

bud.js

⚡️ Lightning fast frontend build tools combining the best parts of Symfony Encore and Laravel Mix

Features

  • Zero config by default (seriously, you don’t even need a config file).
  • Modular by design. Use only what you need.
  • Easily implementable multi-compiler support.
  • Heckin’ fast.
  • Luxury dev tooling including semi-automated dependency management.
  • Supports configuration with TypeScript.
  • Customizable and extensible. Add new features. Swap our core components with your own.

bud.js build

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

Check out our dedicated documentation to get started.

There are also example implementations available in the /examples directory of this repo.

Available modules

Presets

Name Usage Latest
@roots/bud-preset-recommend 📚 Usage npm
@roots/bud-preset-wordpress 📚 Usage npm

Extensions

Name Usage Latest
@roots/bud-babel 📚 Usage npm
@roots/bud-compress 📚 Usage npm
@roots/bud-criticalcss 📚 Usage npm
@roots/bud-emotion 📚 Usage npm
@roots/bud-entrypoints 📚 Usage npm
@roots/bud-esbuild 📚 Usage npm
@roots/bud-eslint 📚 Usage npm
@roots/bud-imagemin 📚 Usage npm
@roots/bud-library 📚 Usage npm
@roots/bud-mdx 📚 Usage npm
@roots/bud-postcss 📚 Usage npm
@roots/bud-prettier 📚 Usage npm
@roots/bud-purgecss 📚 Usage npm
@roots/bud-react 📚 Usage npm
@roots/bud-sass 📚 Usage npm
@roots/bud-solid 📚 Usage npm
@roots/bud-stylelint 📚 Usage npm
@roots/bud-tailwindcss 📚 Usage npm
@roots/bud-terser 📚 Usage npm
@roots/bud-typescript 📚 Usage npm
@roots/bud-vue 📚 Usage npm
@roots/bud-wordpress-dependencies 📚 Usage npm
@roots/bud-wordpress-externals 📚 Usage npm
@roots/bud-wordpress-manifests 📚 Usage npm

Have you produced a Bud extension and want to share it here? Please, create an issue sharing information about your project.

Want to contribute to bud.js?

Check out our development guide to get started.

Licensing

Bud is licensed MIT.

Community

Keep track of development and community news.

Contributing

Contributions are welcome from everyone.

We have contribution guidelines to help you get started.

Sponsors

Help support our open-source development efforts by becoming a patron.

KM Digital Carrot C21 Redwood Realty WordPress.com Pantheon

changelog

Changelog

For more information on any given release check the corresponding bud.js.org release tag

5.4.0 (2022-02-22)

5.3.2 (2022-02-11)

5.3.1 (2022-02-10)

5.3.0 (2022-02-09)

5.2.0 (2022-01-19)

v5.1.0 (2022-01-19)

v5.0.0 (2021-11-22)

Bud v5 comes with a lot of changes. Please review the diff to see what's changed.

The most important change You no longer need to explicitly require an extension in your configuration file or call bud.use to load it. Bud will automatically load the extensions you have installed.

Breaking

  • @roots/bud-cli has been deprecated. CLI functionality is packaged with @roots/bud.
  • bud.use method is now asynchronous.
  • bud.build.make method is now asynchronous.
  • Hook key build now refers to an asynchronous filter.
  • Hook key build.plugins now refers to an asynchronous filter.
  • bud.extensions.enqueue can be used to enqueue a plugin and returns Bud instance for chaining.
  • @roots/bud no longer exports Framework. Use Bud or import Framework from @roots/bud-framework instead.

Added

  • Yaml, json5 and TypeScript config file support.

  • Multi-compiler support:

    • bud.make will create a new Bud instance for you to configure.
    • bud.get will retrieve a previously made child instance for further configuration.
    • bud.set allows setting a Bud instance as a bud.children entry.
    • bud.root always returns the parent compiler. If called from the parent it will return itself.
    • bud.isRoot will be true in the parent context.
    • bud.hasChildren will be true in the parent context if there are child Bud instances.
  • Several new hooks:

    • event.build.make.before is called just before the webpack config is created (async).
    • event.build.make.after is called just after the webpack config is created (async).
    • event.compiler.before is called just before the final config is passed to webpack.
    • event.compiler.after is called just after the final config is passed to webpack.
  • New CLI commands:

    • bud clean - removes dist and cache files
    • bud doctor - check for missing peer dependencies and configuration errors
    • bud install - automatically install/update required dependencies
    • bud serve - start the development server and initiate hot module reloading
  • New bud build flags:

    • --target Target a specific Bud instance to be built in isolation. Can be passed multiple times to target more than one compiler.
    • --[no]-cache Toggle filesystem caching. [default: true]
    • --cache.type Set the cache type. Can be filesystem or memory. [default: filesystem]
    • --location.[src|dist|project|storage] Set a project disk location
    • --[no]-log - Toggle logging [default: true]
    • --[no]-log.level - Set logging level (v, vv, vvv, vvvv) [default: vvv]
    • --[no]-log.papertrail - Allow logger lines to overwrite the previous line from the same scope [default: --no-log.papertrail]
    • --log-secret - Suppress a string from logger output (can use multiple times) [default: --log-secret {cwd}]
    • --[no]-dashboard - Toggle the bud dashboard [default: --dashboard]
    • ...many more! add --help after any command to see what options are available.
  • example project demonstrating how to use off-the-shelf webpack plugins with bud.use

Improved

  • Greatly improved performance. The entire Bud lifecycle is asynchronous.
  • Installed extensions are now automatically registered and booted.
  • Peer dependency requirements are now checked. Missing dependencies will not throw an error but will be logged.
  • bud.use now supports using Webpack plugins directly.
  • Informative logging.
  • The CLI and dashboard have a fresh coat of paint.
  • New notification center integration (MacOS only)
  • Dashboard warnings and errors are now better displayed in the console.

Fixed

  • bud.proxy - fixed proxy interceptor
  • bud.serve - fixed development server public path
  • bud.serve - disables module hashing in development mode. this is enforced

Internal

  • @roots/bud-typings has been deprecated.
  • Added @roots/yarn-plugin-kjo to provide utilities in the yarn @bud namespace.

Extension specific notes

The following notes only apply to specific extensions: