[wp-trac] [WordPress Trac] #64884: Build: Exclude non-minified VIPS files from grunt module copy
WordPress Trac
noreply at wordpress.org
Wed Mar 18 15:59:12 UTC 2026
#64884: Build: Exclude non-minified VIPS files from grunt module copy
------------------------------+---------------------
Reporter: adamsilverstein | Owner: (none)
Type: defect (bug) | Status: new
Priority: normal | Milestone: 7.0
Component: Build/Test Tools | Version: trunk
Severity: normal | Resolution:
Keywords: has-patch | Focuses:
------------------------------+---------------------
Description changed by adamsilverstein:
Old description:
> ## Summary
>
> The `gutenberg-modules` grunt copy task in `Gruntfile.js` copies all
> script module files from the Gutenberg build except `.map` files.
> However, it does not exclude non-minified VIPS files, which are ~16MB of
> base64-encoded inlined WASM data. The non-minified `worker.js` is nearly
> identical in size to `worker.min.js` (minification has negligible effect
> on base64-encoded binary data) and provides no debugging value.
>
> The existing `tools/gutenberg/copy.js` already has this exclusion (lines
> 213-220), but the Gruntfile's `copy:gutenberg-modules` task — which
> performs the actual module copy during `grunt build:gutenberg` — was
> missing the equivalent filter. This results in both `worker.js` (~16MB)
> and `worker.min.js` (~16MB) being included in the build output
> unnecessarily.
>
> ## Steps to Reproduce
>
> 1. Run `npx grunt build:gutenberg`
> 2. Check `build/wp-includes/js/dist/script-modules/vips/`
> 3. Observe both `worker.js` and `worker.min.js` are present, nearly
> identical in size (~16MB each)
>
> ## Expected Behavior
>
> Only `worker.min.js` should be present in the build output, since the
> non-minified version provides no additional value for WASM-inlined
> content.
>
> ## Proposed Change
>
> Add a glob exclusion `!vips/!(*.min).js` to the `gutenberg-modules` copy
> task's `src` array in `Gruntfile.js`, matching the filter already in
> `tools/gutenberg/copy.js`.
>
> PR: https://github.com/WordPress/wordpress-develop/pull/11281
> Companion Gutenberg PR: https://github.com/WordPress/gutenberg/pull/76615
New description:
== Summary
The `gutenberg-modules` grunt copy task in `Gruntfile.js` copies all
script module files from the Gutenberg build except `.map` files. However,
it does not exclude non-minified VIPS files, which are ~16MB of
base64-encoded inlined WASM data. The non-minified `worker.js` is nearly
identical in size to `worker.min.js` (minification has negligible effect
on base64-encoded binary data) and provides no debugging value.
The existing `tools/gutenberg/copy.js` already has this exclusion (lines
213-220), but the Gruntfile's `copy:gutenberg-modules` task — which
performs the actual module copy during `grunt build:gutenberg` — was
missing the equivalent filter. This results in both `worker.js` (~16MB)
and `worker.min.js` (~16MB) being included in the build output
unnecessarily.
== Steps to Reproduce
1. Run `npx grunt build:gutenberg`
2. Check `build/wp-includes/js/dist/script-modules/vips/`
3. Observe both `worker.js` and `worker.min.js` are present, nearly
identical in size (~16MB each)
== Expected Behavior
Only `worker.min.js` should be present in the build output, since the non-
minified version provides no additional value for WASM-inlined content.
== Proposed Change
Add a glob exclusion `!vips/!(*.min).js` to the `gutenberg-modules` copy
task's `src` array in `Gruntfile.js`, matching the filter already in
`tools/gutenberg/copy.js`.
PR: https://github.com/WordPress/wordpress-develop/pull/11281
Companion Gutenberg PR: https://github.com/WordPress/gutenberg/pull/76615
--
--
Ticket URL: <https://core.trac.wordpress.org/ticket/64884#comment:1>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list