Releases: roots/bud
6.17.0
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 withbud.purge
.bud.purge.setOptions
works exactly the same way asbud.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
- ✨ improve(patch): prevent duplicate entrypoint imports by @kellymears in #2451
- ✨ improve(patch): better organize server service by @kellymears in #2453
- ✨ improve(patch): cleanup doctor command by @kellymears in #2452
- ✨ improve(patch): @roots/bud-stylelint api by @kellymears in #2454
- ✨ improve(patch): upgradeable community extensions by @kellymears in #2448
- ✨ improve(patch): improve @roots/bud-solid exports map by @kellymears in #2457
- ✨ improve(minor): reasonable defaults for purgecss (@roots/bud-purgecss) by @kellymears in #2443
- ✨ improve(patch): improve @roots/bud-esbuild exports map by @kellymears in #2458
- ✨ improve(patch): bud upgrade by @kellymears in #2464
- 🩹 fix(none): create-bud-app readme template link update by @talss89 in #2446
- 📦 deps(minor): upgrade dependencies by @kellymears in #2436
- 📦 deps(patch): upgrade dependencies by @kellymears in #2461
- 📦 deps(patch): bump systeminformation from 5.11.25 to 5.21.8 by @dependabot in #2456
- 📁 types(patch): improve typings (@roots/bud-react) by @kellymears in #2442
- 📕 docs(none):
--target
becomes--filter
by @talss89 in #2460 - 📕 docs(none): improve root README.md by @kellymears in #2462
- 📕 docs(none): fix community extensions URL in README.md by @talss89 in #2447
- 📕 docs(none): add community extensions to README.md by @kellymears in #2445
- 🧹 chore(none): Update sponsors by @retlehs in #2450
Full Changelog: v6.16.1...v6.17.0
6.16.1
Fix for bud upgrade
command (when using yarn classic).
What's Changed
- 🩹 fix(patch): fix
bud upgrade
by @kellymears in #2438
Full Changelog: v6.16.0...v6.16.1
6.16.0
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
- 🩹 fix(patch): fix emotion plugin resolution (@roots/bud-emotion) by @kellymears in #2416
- 👍🏼 improve(patch): support
*.module.scss
(@roots/bud-sass) by @kellymears in #2421 - 📕 docs(none): syntax error when using default export -
filters.md
by @Hansanghyeon in #2420 - 👍🏼 improve(patch): prevent duplicate dashboard renders by @kellymears in #2422
- 👍🏼 improve(patch):
bud.watch
api by @kellymears in #2423 - 📕 docs(none): update
adding-postcss.mdx
by @nlemoine in #2425 - ✨ improve(patch): add
@roots/bud-support/jsx-runtime
by @kellymears in #2426 - 🩹 fix(patch): fix proxy url by @kellymears in #2427
- ✨ improve(patch): improve yarn berry and pnpm support by @kellymears in #2432
- 🩹 fix(patch): fix bud menu selection by @kellymears in #2433
- 📁 types(patch): fix @roots/bud-framework type exports by @kellymears in #2437
New Contributors
- @Hansanghyeon made their first contribution in #2420
Full Changelog: v6.15.2...v6.16.0
6.15.2
Patch: fixes a potential issue with resolving sass-loader
and improves bud.cache
interface and build dependency identification.
What's Changed
- ✨ improve(patch): improve cache.buildDependencies by @kellymears in #2410
- 🩹 fix(patch): sass-loader resolve by @kellymears in #2413
Full Changelog: v6.15.1...v6.15.2
6.15.1
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
- ✨ improve(patch): heal cli commands cache by @kellymears in #2400
- 🗂️ types(patch): include types directory (criticalcss) by @kellymears in #2401
- ✨ improve(patch): nested errors by @kellymears in #2402
- ✨ improve(patch): --use flag by @kellymears in #2403
- 🩹 fix(patch): create-bud-app fails when no dependencies are selected by @kellymears in #2404
- 📕 docs(none): wordpress preset code samples by @kellymears in #2405
- 📕 docs(none): entrypoints manifest by @kellymears in #2406
- 📦 deps(patch): upgrade dependencies by @kellymears in #2407
- ⚙️ internal(none): security.md by @kellymears in #2408
- 🩹 fix(patch): create-bud-app dependencies by @kellymears in #2409
Full Changelog: v6.15.0...v6.15.1
6.15.0
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:
- 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
andeditor
, even if they were only used in one (since the shared vendor module contains references to the dependencies). - 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.
- If you really want a vendors chunk, just call
bud.splitChunks()
or pass the--splitChunks
flag.
What's Changed
- 📕 docs: improve docs by @kellymears in #2368
- 🩹 fix(patch): register command type error after extension uninstall by @kellymears in #2372
- 👍🏼 improve(minor): internals & tests by @kellymears in #2373
- 🧹 chore(none): cleanup by @kellymears in #2376
- 📦 deps(patch): bump vitest from 0.32.2 to 0.33.0 by @dependabot in #2375
- 📦 deps(deps): bump @babel/core from 7.22.5 to 7.22.9 by @dependabot in #2374
- 📦 deps(deps): bump ts-loader from 9.4.3 to 9.4.4 by @dependabot in #2356
- 📦 deps(deps): bump @babel/runtime from 7.22.5 to 7.22.6 by @dependabot in #2355
- 📦 deps(minor): upgrade by @kellymears in #2377
- 🩹 fix(none): readme generation by @kellymears in #2378
- 🩹 fix(none): nightly release by @kellymears in #2383
- 🩹 fix: parallelism by @kellymears in #2386
- 👍🏼 improve: build performance by @kellymears in #2387
- 📦 deps(deps): bump word-wrap from 1.2.3 to 1.2.4 by @dependabot in #2384
- 📦 deps(deps): bump esbuild from 0.18.13 to 0.18.14 by @dependabot in #2379
- 👍🏼 improve: error handling by @kellymears in #2388
- 📦 deps(deps): bump esbuild-wasm from 0.18.13 to 0.18.14 by @dependabot in #2380
- ✨ feat(minor): configurable wordpress externals by @kellymears in #2389
- 🩹 fix(patch):
--editor
warning when--editor
not used by @kellymears in #2390 - 🩹 fix(patch): multi-compiler uncaught errors in dev by @kellymears in #2392
- 📕 docs: fix @roots/bud-sass installation docs by @xeader in #2391
- ✨ improve: stricter typings by @kellymears in #2393
- 🗂️ types(patch): strict typings by @kellymears in #2394
- ✨ improve: typings & tests by @kellymears in #2395
- 🗂️ types(none): improve typechecking by @kellymears in #2396
- 📕 docs(none): wordpress enqueues by @kellymears in #2397
- 🩹 fix(patch): fix casing in dashboard of Dev by @kellymears in #2398
- ✨ improve(minor): no split chunks (@roots/sage) by @kellymears in #2399
New Contributors
Full Changelog: v6.14.3...v6.15.0
6.14.3
Fixes and improvements.
What's Changed
- 🩹 fix <alpha-value> Tailwind placeholder by @StudioRectangle in #2369
- ✨ improve: tighten y-padding of dashboard elements by @kellymears in #2371
New Contributors
- @StudioRectangle made their first contribution in #2369
Full Changelog: v6.14.2...v6.14.3
6.14.2
Fixes #2365: bud@16.4.1 incompatible with stylelint@15.10.1
What's Changed
- 👍🏼 improve:
bud stylelint
compatibility by @kellymears in #2367 - 📦 deps(deps): bump syncpack from 10.6.1 to 10.7.3 by @dependabot in #2358
Full Changelog: v6.14.1...v6.14.2
6.14.1
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
- 🩹 fix(@roots/entrypoints-webpack-plugin): stale caching by @kellymears in #2363
6.14.0
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 withbud.dashboard
.bud.context.files
: interface has changed. Themodule
property for each value inbud.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 totailwind.config.js
now result in rebuild oftheme.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 callingbud.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 towp-*
enqueue handles andwp.*
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
- 🩹 fix: bud upgrade by @kellymears in #2323
- ✨ improve: bud error handling by @kellymears in #2326
- ✨ improve: error handling by @kellymears in #2327
- ✨ improve: dashboard by @kellymears in #2329
- 📦 deps(deps): bump @types/eslint from 8.40.1 to 8.40.2 by @dependabot in #2318
- 📦 deps(deps): bump @swc/plugin-emotion from 2.5.51 to 2.5.68 by @dependabot in #2320
- 📦 deps(deps): bump @swc/core from 1.3.42 to 1.3.66 by @dependabot in #2333
- 📦 deps(deps): bump semver from 7.5.1 to 7.5.3 by @dependabot in #2337
- 📦 deps(deps-dev): bump @aws-sdk/client-s3 from 3.348.0 to 3.357.0 by @dependabot in #2334
- ✨ improve: config module handling by @kellymears in #2336
- 📦 deps: upgrade packages by @kellymears in #2342
- 🧹 cleanup: streamline lifecycle/cli init by @kellymears in #2347
- 🧪 test: cli flags by @kellymears in #2348
- 📕 docs: update readme by @kellymears in #2354
- 🩹 fix: config.after by @kellymears in #2359
- 🧪 test: improve integration by @kellymears in #2361
- 🗂️ typings: @roots/bud/instance by @kellymears in #2360