High-performance build system that supports SWC, esbuild, and Babel
MIT License
Bot releases are visible (Hide)
Published by kellymears 2 months ago
A couple minor bug fixes.
lintDirtyModulesOnly
is false by default by @kellymears in https://github.com/roots/bud/pull/2638
Full Changelog: https://github.com/roots/bud/compare/v6.23.2...v6.23.3
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.
Full Changelog: https://github.com/roots/bud/compare/v6.23.1...v6.23.2
Published by kellymears 4 months ago
Fixes an error with certain stylelint configurations.
Full Changelog: https://github.com/roots/bud/compare/v6.23.0...v6.23.1
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.
Full Changelog: https://github.com/roots/bud/compare/v6.22.0...v6.23.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.
Unexpected invalid media query "screen(x)"
for Tailwind by @codepuncher in https://github.com/roots/bud/pull/2558
Full Changelog: https://github.com/roots/bud/compare/v6.21.0...v6.22.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.
custom-property-pattern
rule changed for compatibility with WP naming by @cawa-93 in https://github.com/roots/bud/pull/2539
Full Changelog: https://github.com/roots/bud/compare/v6.20.0...v6.21.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.
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.
theme.spacing
values to theme.jsonCall bud.wp.json.useTailwindSpacing()
to source spacing values from your tailwind config.
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.
Full Changelog: https://github.com/roots/bud/compare/v6.19.1...v6.20.0
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).
Full Changelog: https://github.com/roots/bud/compare/v6.19.0...v6.19.1
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.
Full Changelog: https://github.com/roots/bud/compare/v6.18.0...v6.19.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.
Bud
as an argument so they can be more readily combined with functions like bud.when (e.g. bud.when(bud.isDevelopment, bud.devtool)
).--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
).h
).done
method which returns the bud instance, for better chaining.--log
).roots
to eslint globals by @joshuafredrickson in https://github.com/roots/bud/pull/2479
Full Changelog: https://github.com/roots/bud/compare/v6.17.0...v6.18.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.
Sensible defaults are applied automatically, making this extension zero config. There is a much better API available using bud.purge
rather than bud.purgecss
.
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.--target
becomes --filter
by @talss89 in https://github.com/roots/bud/pull/2460
Full Changelog: https://github.com/roots/bud/compare/v6.16.1...v6.17.0
Published by kellymears about 1 year ago
Fix for bud upgrade
command (when using yarn classic).
bud upgrade
by @kellymears in https://github.com/roots/bud/pull/2438
Full Changelog: https://github.com/roots/bud/compare/v6.16.0...v6.16.1
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.
*.module.scss
(@roots/bud-sass) by @kellymears in https://github.com/roots/bud/pull/2421
filters.md
by @Hansanghyeon in https://github.com/roots/bud/pull/2420
bud.watch
api by @kellymears in https://github.com/roots/bud/pull/2423
adding-postcss.mdx
by @nlemoine in https://github.com/roots/bud/pull/2425
@roots/bud-support/jsx-runtime
by @kellymears in https://github.com/roots/bud/pull/2426
Full Changelog: https://github.com/roots/bud/compare/v6.15.2...v6.16.0
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.
Full Changelog: https://github.com/roots/bud/compare/v6.15.1...v6.15.2
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.
Full Changelog: https://github.com/roots/bud/compare/v6.15.0...v6.15.1
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.
@roots/sage: previously bud.splitChunks('single')
was called for production builds. This is no longer the default for two reasons:
app
and editor
, even if they were only used in one (since the shared vendor module contains references to the dependencies).bud.splitChunks()
or pass the --splitChunks
flag.--editor
warning when --editor
not used by @kellymears in https://github.com/roots/bud/pull/2390
Full Changelog: https://github.com/roots/bud/compare/v6.14.3...v6.15.0
Published by kellymears over 1 year ago
Fixes and improvements.
Full Changelog: https://github.com/roots/bud/compare/v6.14.2...v6.14.3
Published by kellymears over 1 year ago
Fixes #2365: [email protected] incompatible with [email protected]
bud stylelint
compatibility by @kellymears in https://github.com/roots/bud/pull/2367
Full Changelog: https://github.com/roots/bud/compare/v6.14.1...v6.14.2
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.
Published by kellymears over 1 year ago
Top-level await, lazy compilation of async modules, CLI improvements, performance enhancements, and more.
@roots/merged-manifest-webpack-plugin
@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.imports
field of package.json
@roots/wordpress-theme-json-webpack-plugin
): theme.json
included in compilation module graph@roots/bud-tailwindcss-theme-json
): Edits to tailwind.config.js
now result in rebuild of theme.json
@roots/entrypoints-webpack-plugin
): entrypoints.json
included in compilation module graph@roots/bud-dashboard
): improved UI--entrypoints.html
(same as calling bud.entrypoints.set('emitHtml', true)
; emits partials containing <script>
and <style>
tags)--dashboard
(use dashboard stats vs. simple stats output)--dashboard.assets
(show/hide presentation of assets)--dashboard.compact
(truncated build summary)--dashboard.entrypoints
(show/hide presentation of entrypoints)--dashboard.server
(show/hide server info)1
-9
will show stats isolated by compiler. 0
shows all compilers.d
when viewing the dashboard will show detailed debug statsc
when viewing the dashboard will present output with compact formatting@roots/wordpress-transforms
): small utility for translating @wordpress/*
signifiers to wp-*
enqueue handles and wp.*
window references@roots/bud-framework
): flatten organization of typingsThe 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 defaultYou 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.
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.
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).