bud

High-performance build system that supports SWC, esbuild, and Babel

MIT License

Downloads
1.6M
Stars
336
Committers
26

Bot releases are hidden (Show)

bud - 6.23.3

Published by kellymears 2 months ago

A couple minor bug fixes.

What's Changed

Full Changelog: https://github.com/roots/bud/compare/v6.23.2...v6.23.3

bud - 6.23.2 Latest Release

Published by kellymears 2 months ago

Fixes an error when using @roots/bud-typescript in combination with @roots/bud-vue. Adds a new method which removes the _DEFAULT suffix from tailwind color values in generated WordPress theme.json files. Various security patches and transitive dependency updates.

What's Changed

Full Changelog: https://github.com/roots/bud/compare/v6.23.1...v6.23.2

bud - 6.23.1

Published by kellymears 4 months ago

Fixes an error with certain stylelint configurations.

What's Changed

Full Changelog: https://github.com/roots/bud/compare/v6.23.0...v6.23.1

bud - 6.23.0

Published by kellymears 4 months ago

@roots/bud-sass should no longer error without @roots/bud-postcss. We strongly recommend you use PostCSS.

Update @roots/sage/stylelint config so as to not cause deprecation notices and errors. Adds examples/sage-with-stylelint to demonstrate a working config.

Improves error handling. Adds integration tests to cover the fixed bugs.

What's Changed

Full Changelog: https://github.com/roots/bud/compare/v6.22.0...v6.23.0

bud - 6.22.0

Published by kellymears 4 months ago

Some nice performance enhancements. code coverage gains and dependency upgrades in this release.

There is a known issue with this release affecting projects using the @roots/sage/stylelint config. If you rely on this config you may wish to hold off and upgrade to 6.23.0.

What's Changed

New Contributors

Full Changelog: https://github.com/roots/bud/compare/v6.21.0...v6.22.0

bud - 6.21.0

Published by kellymears 6 months ago

Fixes errors with s3 and improves the WordPress stylelint config. There will likely be a 6.22.0 in the coming days with dependency upgrades.

What's Changed

New Contributors

Full Changelog: https://github.com/roots/bud/compare/v6.20.0...v6.21.0

bud - 6.20.0

Published by kellymears 10 months ago

This release is mainly focused around addressing errors related to @roots/bud-preset-wordpress and @roots/sage users.

Fixed: module reload problems

The origin of this problem stems from WordPress not enqueuing assets that depend on wp-react-refresh-runtime if the WordPress config variable SCRIPT_DEBUG is not true. bud.js will now check the SCRIPT_DEBUG env variable, and if true will use wp-react-refresh-runtime. Otherwise, that runtime will be included in the bundle and the script dependency will be left undeclared. In lieu of an environment variable you can call bud.wp.setScriptDebug(true) in your bud.js configuration.

If you opt in (either by calling the config function or setting the environment variable) you must make sure it is set in your WordPress config. If you do nothing, you'll probably be fine, but we recommend either setting the environment variable or calling the new config function if you experience conflicts between the WordPress core dev runtime and bud.js dev runtime.

Feature: Support for mapping tailwindcss theme.spacing values to theme.json

Call bud.wp.json.useTailwindSpacing() to source spacing values from your tailwind config.

Fix: Node 16 compatibility

Downgraded globby from v14 to v13 so as to maintain compatibility with Node 16. We will be moving to Node 20 with the next major release of bud.js but we want to maintain compatibility with Node 16 for all bud.js 6.x.x releases. You should see major benefits in performance and reliability using Node 20 so we definitely recommend upgrading as soon as possible, if you can.

What's Changed

Full Changelog: https://github.com/roots/bud/compare/v6.19.1...v6.20.0

bud - 6.19.1

Published by kellymears 10 months ago

Fixes an issue where the bud.module cache was not properly invalidated, resulting in import errors when upgrading from earlier versions (#2523).

What's Changed

Full Changelog: https://github.com/roots/bud/compare/v6.19.0...v6.19.1

bud - 6.19.0

Published by kellymears 10 months ago

This release reverts the figures dependency to v4 to maintain compatibility with Node 16. We will do this upgrade when we release the next major version of bud.js, and recommend all users move on to Node 20 as soon as possible. Still, we didn't intend to introduce this incompatibility in a minor release (v6.18.0).

This also fixes errors with inlined assets when using @roots/bud-vue. This required reordering some module rules (which is why this release is a minor release rather than a patch). If you are using the build.module.rules hook (or any of its inner hooks, like build.module.rules.oneOf), you may need to update code if you are relying on the rules being ordered in a particular way. Thanks to @rkaalma for the report.

There also corrects a sneaky issue where expanded environment variables were not always being overridden as designed.

Lastly, there have been improvements made to the handling of webpack plugin instances used directly with bud.extensions.add or bud.use. Related tests have been improved along with the example config. You should also see these plugins in the bud doctor listing in a more easily identifiable way.

Related issues

What's Changed

Full Changelog: https://github.com/roots/bud/compare/v6.18.0...v6.19.0

bud - 6.18.0

Published by kellymears 11 months ago

This is a relatively big release but should not require any changes to your project configuration.

Node.js LTS is now 20.10 and bud.js has adopted it. We are still not doing anything that requires it but bud doctor will warn you to upgrade Node.js if you're still on 18 and will really warn you if you are using an even earlier version.

Previously, @roots/browserslist-config would update the can-i-use database as a post install script. This check has been moved into the bud.js application, running before compilation. It runs once per week and only if you have defined a browserslist property in package.json. It can be disabled by setting an environment variable (BUD_BROWSERSLIST_UPDATE=false), or with the --no-browserslist-update flag.

Fixed

  • Fixes an issue where sometimes a stale error notification would persist in the browser even after it was fixed in source.
  • Fixes an issue where sometimes installations could hang when using Yarn v3+.

New

  • bud.addConfig: config function which accepts a path to another config file to run.
  • bud.lazy: config function to configure lazy compilation settings.

Improved

  • bud.devtool, bud.hash bud.minimize, bud.persist, and bud.runtime now accept Bud as an argument so they can be more readily combined with functions like bud.when (e.g. bud.when(bud.isDevelopment, bud.devtool)).
  • bud.hash: Now accepts the hash generation function as a string, if you want to customize it.
  • --runtime flag: now accepts a string argument (e.g. --runtime=single, --runtime=multiple). It can still be used as a boolean flag: (e.g. --runtime, --no-runtime).
  • bud build development: Help menu with keyboard shortcuts (toggle with h).
  • YML configs now support dot notation in config keys. See updated documentation.
  • bud repl: This command is now more responsive to terminal window sizing (it was previously capped at 10 rows).
  • bud clean: This command now only lists directories which it actually removed.
  • All extensions now have a done method which returns the bud instance, for better chaining.
  • General improvements to logging (--log).
  • General improvements to exception handling.
  • Code minimizers (terser, etc.) are lazy loaded only when they are used, which is a performance gain.
  • html-webpack-plugin is lazy loaded only when it is being used, which is a performance gain.

What's Changed

Full Changelog: https://github.com/roots/bud/compare/v6.17.0...v6.18.0

bud - 6.17.0

Published by kellymears about 1 year ago

Improvements in 6.17.0 are mainly focused on @roots/bud-purgecss and @roots/bud-stylelint APIs. Also includes a way for community extensions to indicate compatibility with specific bud.js releases. This allows community extension authors to version their work independently of bud.js core and for users to update extensions along with core packages using the bud upgrade command (#2444).

Also includes a few minor bug fixes and updates to transitive dependencies.

⚠️ Breaking Changes

@roots/bud-postcss

Sensible defaults are applied automatically, making this extension zero config. There is a much better API available using bud.purge rather than bud.purgecss.

  • lf you have installed the extension but are not using it you will either want to remove the extension or explicitly disable it: bud.purge.enable(false).
  • bud.purgecss function is deprecated. You should configure purgecss using the extension API exposed with bud.purge. bud.purge.setOptions works exactly the same way as bud.purgecss does, but there is now a new, fully fluent API available to you as well.
  • bud.purgecss will not be removed until v7.

What's Changed

Full Changelog: https://github.com/roots/bud/compare/v6.16.1...v6.17.0

bud - 6.16.1

Published by kellymears about 1 year ago

Fix for bud upgrade command (when using yarn classic).

What's Changed

Full Changelog: https://github.com/roots/bud/compare/v6.16.0...v6.16.1

bud - 6.16.0

Published by kellymears about 1 year ago

This update adds css module support for scss when using @roots/bud-sass, improves the CLI dashboard, and adds experimental support for pnpm and yarn berry to the bud ugprade and create-bud-app commands. It also includes dependency updates, bug fixes and other internal improvements.

What's Changed

New Contributors

Full Changelog: https://github.com/roots/bud/compare/v6.15.2...v6.16.0

bud - 6.15.2

Published by kellymears about 1 year ago

Patch: fixes a potential issue with resolving sass-loader and improves bud.cache interface and build dependency identification.

What's Changed

Full Changelog: https://github.com/roots/bud/compare/v6.15.1...v6.15.2

bud - 6.15.1

Published by kellymears about 1 year ago

Fixes issues with create- bud-app when not specifying any features (totally vanilla project) and improves CLI command cache to be mostly self-healing.

What's Changed

Full Changelog: https://github.com/roots/bud/compare/v6.15.0...v6.15.1

bud - 6.15.0

Published by kellymears about 1 year ago

This release is mostly focused on maintaining and improving existing features. The one new feature lets you opt-out of externalizing certain WordPress dependencies (if you are using @roots/bud-preset-wordpress or @roots/sage). For more information check out the updated @roots/bud-preset-wordpress docs.

⚠️ Potentially breaking change

@roots/sage: previously bud.splitChunks('single') was called for production builds. This is no longer the default for two reasons:

  1. If you have an editor entrypoint and an app entrypoint (common), it is possible that editor dependencies could be extracted into the common chunk. This can lead to Acorn enqueuing those dependencies for both app and editor, even if they were only used in one (since the shared vendor module contains references to the dependencies).
  2. This is very easy to address as part of your application and that approach is preferred. Especially now that top-level async/await is available for bud.js application modules.
  3. If you really want a vendors chunk, just call bud.splitChunks() or pass the --splitChunks flag.

What's Changed

New Contributors

Full Changelog: https://github.com/roots/bud/compare/v6.14.3...v6.15.0

bud - 6.14.3

Published by kellymears over 1 year ago

Fixes and improvements.

What's Changed

New Contributors

Full Changelog: https://github.com/roots/bud/compare/v6.14.2...v6.14.3

bud - 6.14.2

Published by kellymears over 1 year ago

Fixes #2365: [email protected] incompatible with [email protected]

What's Changed

Full Changelog: https://github.com/roots/bud/compare/v6.14.1...v6.14.2

bud - 6.14.1

Published by kellymears over 1 year ago

Quick turnaround for an issue in 6.14.0.

If you are effected by this you can work around it using --no-cache until you can update.

What's Changed

bud - 6.14.0

Published by kellymears over 1 year ago

Top-level await, lazy compilation of async modules, CLI improvements, performance enhancements, and more.

🚨 Potentially breaking changes

  • deprecated: @roots/merged-manifest-webpack-plugin
  • deprecated: @roots/bud-wordpress-manifests
  • bud.console: removed. old methods consolidated with bud.dashboard.
  • bud.context.files: interface has changed. The module property for each value in bud.context.files is now an async function that returns the module. This is an undocumented internal, but some people might be using it.

Key changes

  • ✨ feature: top level await (enabled for ESM projects only)
  • ✨ feature: creates aliases from imports field of package.json
  • ✨ feature: dynamic modules now compiled lazily in development
  • 🏎️ performance: multi-config builds are now built in parallel
  • ✨ improve: config files now lazy loaded
  • ✨ improve(@roots/wordpress-theme-json-webpack-plugin): theme.json included in compilation module graph
  • ✨ improve(@roots/bud-tailwindcss-theme-json): Edits to tailwind.config.js now result in rebuild of theme.json
  • ✨ improve(@roots/entrypoints-webpack-plugin): entrypoints.json included in compilation module graph
  • ✨ improve(@roots/bud-dashboard): improved UI
  • ✨ add flag: --entrypoints.html (same as calling bud.entrypoints.set('emitHtml', true); emits partials containing <script> and <style> tags)
  • ✨ add flag: --dashboard (use dashboard stats vs. simple stats output)
  • ✨ add flag: --dashboard.assets (show/hide presentation of assets)
  • ✨ add flag: --dashboard.compact (truncated build summary)
  • ✨ add flag: --dashboard.entrypoints (show/hide presentation of entrypoints)
  • ✨ add flag: --dashboard.server (show/hide server info)
  • ✨ feature: for multi-compiler builds 1-9 will show stats isolated by compiler. 0 shows all compilers.
  • ✨ feature: d when viewing the dashboard will show detailed debug stats
  • ✨ feature: c when viewing the dashboard will present output with compact formatting
  • 🩹 fix: issues with bud.js cli error output
  • 🩹 fix: issues with bud.js internal module resolution cache
  • πŸ“¦ pkg(@roots/wordpress-transforms): small utility for translating @wordpress/* signifiers to wp-* enqueue handles and wp.* window references
  • πŸ—‚οΈ typings(@roots/bud-framework): flatten organization of typings

Additional Notes

bud.js module resolution cache is now self-healing

The bud.js module resolution cache is now self-healing. If a build dependency was previously available at some path but is now unresolvable its entry will be updated while still preserving the rest of the cache. There should now be limited reason to use --force to manually flush the cache; it will probably only serve to make your next build slower.

--no-clean will be a future default

You can get a surprising performance boost by using the --no-clean flag (some test projects are >15% faster). Why delete and rewrite modules which have not been modified? This will be default in the next major release of bud.js.

You might not want to make a vendor chunk

If you are doing a lot of code splitting with imports, try disabling chunking and see if it improves initial page load (bud.splitChunks(false) or --no-splitChunks). The extra runtime code might not be worth it if you are already importing modules conditionally.

--ci will soon mean more than "run this without fanciness"

If you are using --ci solely to not display stats consider switching to --no-dashboard. There may be changes in the future to the behavior of this flag which are focused on CI environments specifically.

bud.js instance is now importable

The bud.js instance is now available as a named import from @roots/bud (import {bud} from '@roots/bud'). This allows for a bunch of stuff you couldn't do before. Like, as an example, configuring bud.js without an exported callback:

import {bud} from '@roots/bud'

bud.entry('app', ['app.js', 'app.css'])

You can also import the instance into other config modules or custom scripts. Not all tools will play nicely. Tailwindcss, for example, will try to bundle bud.js along with your tailwind config using jiti. It won't succeed (jiti can't handle import.meta).

Full Changelog

https://github.com/roots/bud/compare/v6.13.1...v6.14.0