Skip to content
This repository was archived by the owner on Feb 23, 2024. It is now read-only.

Commit 07b0d70

Browse files
authored
Build: Split out vendor files into separate, shared JS & CSS files (#314)
* Add splitchunks to webpack config to combine node_modules imports into a vendors script * Move legacy CSS into legacy folder * Get components css without needing to use relative path * Add vendors css file
1 parent 5b41e3a commit 07b0d70

File tree

5 files changed

+38
-10
lines changed

5 files changed

+38
-10
lines changed

assets/css/products-grid.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// Import the woocommerce components stylesheet
2-
@import "../../node_modules/@woocommerce/components/build-style/style.css";
2+
@import "~@woocommerce/components/build-style/style.css";
33

44
// Hack to hide preview overflow.
55
.editor-block-preview__content {

assets/js/legacy/products-block.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const { InspectorControls, BlockControls } = wp.editor;
55
const { Toolbar, Button, Dashicon, RangeControl, Tooltip, SelectControl } = wp.components;
66
const { apiFetch } = wp;
77

8-
import '../../css/products-block.scss';
8+
import './products-block.scss';
99

1010
import { ProductsSpecificSelect } from './views/specific-select.jsx';
1111
import { ProductsCategorySelect } from './views/category-select.jsx';

webpack.config.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,17 @@ const GutenbergBlocksConfig = {
4545
libraryTarget: 'this',
4646
},
4747
externals,
48+
optimization: {
49+
splitChunks: {
50+
cacheGroups: {
51+
commons: {
52+
test: /[\\/]node_modules[\\/]/,
53+
name: 'vendors',
54+
chunks: 'all',
55+
},
56+
},
57+
},
58+
},
4859
module: {
4960
rules: [
5061
{

woocommerce-gutenberg-products-block.php

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ function wgpb_register_scripts() {
159159
'wp-i18n',
160160
'wp-url',
161161
'lodash',
162+
'wc-vendors',
162163
);
163164

164165
// @todo Remove this dependency (as it adds a separate react instance).
@@ -170,6 +171,14 @@ function wgpb_register_scripts() {
170171
true
171172
);
172173

174+
wp_register_script(
175+
'wc-vendors',
176+
plugins_url( 'build/vendors.js', __FILE__ ),
177+
array(),
178+
wgpb_get_file_version( '/build/vendors.js' ),
179+
true
180+
);
181+
173182
wp_register_script(
174183
'wc-handpicked-products',
175184
plugins_url( 'build/handpicked-products.js', __FILE__ ),
@@ -238,6 +247,13 @@ function wgpb_register_scripts() {
238247
wp_set_script_translations( 'woocommerce-blocks', 'woo-gutenberg-products-block' );
239248
}
240249

250+
wp_register_style(
251+
'wc-vendors',
252+
plugins_url( 'build/vendors.css', __FILE__ ),
253+
array(),
254+
wgpb_get_file_version( '/build/vendors.css' )
255+
);
256+
241257
wp_register_style(
242258
'wc-products-grid',
243259
plugins_url( 'build/products-grid.css', __FILE__ ),
@@ -248,56 +264,56 @@ function wgpb_register_scripts() {
248264
wp_register_style(
249265
'wc-handpicked-products-editor',
250266
plugins_url( 'build/handpicked-products.css', __FILE__ ),
251-
array( 'wp-edit-blocks', 'wc-products-grid' ),
267+
array( 'wc-vendors', 'wp-edit-blocks', 'wc-products-grid' ),
252268
wgpb_get_file_version( '/build/handpicked-products.css' )
253269
);
254270

255271
wp_register_style(
256272
'wc-product-best-sellers-editor',
257273
plugins_url( 'build/product-best-sellers.css', __FILE__ ),
258-
array( 'wp-edit-blocks', 'wc-products-grid' ),
274+
array( 'wc-vendors', 'wp-edit-blocks', 'wc-products-grid' ),
259275
wgpb_get_file_version( '/build/product-best-sellers.css' )
260276
);
261277

262278
wp_register_style(
263279
'wc-product-category-editor',
264280
plugins_url( 'build/product-category.css', __FILE__ ),
265-
array( 'wp-edit-blocks', 'wc-products-grid' ),
281+
array( 'wc-vendors', 'wp-edit-blocks', 'wc-products-grid' ),
266282
wgpb_get_file_version( '/build/product-category.css' )
267283
);
268284

269285
wp_register_style(
270286
'wc-product-new-editor',
271287
plugins_url( 'build/product-new.css', __FILE__ ),
272-
array( 'wp-edit-blocks', 'wc-products-grid' ),
288+
array( 'wc-vendors', 'wp-edit-blocks', 'wc-products-grid' ),
273289
wgpb_get_file_version( '/build/product-new.css' )
274290
);
275291

276292
wp_register_style(
277293
'wc-product-on-sale-editor',
278294
plugins_url( 'build/product-on-sale.css', __FILE__ ),
279-
array( 'wp-edit-blocks', 'wc-products-grid' ),
295+
array( 'wc-vendors', 'wp-edit-blocks', 'wc-products-grid' ),
280296
wgpb_get_file_version( '/build/product-on-sale.css' )
281297
);
282298

283299
wp_register_style(
284300
'wc-product-top-rated-editor',
285301
plugins_url( 'build/product-top-rated.css', __FILE__ ),
286-
array( 'wp-edit-blocks', 'wc-products-grid' ),
302+
array( 'wc-vendors', 'wp-edit-blocks', 'wc-products-grid' ),
287303
wgpb_get_file_version( '/build/product-top-rated.css' )
288304
);
289305

290306
wp_register_style(
291307
'woocommerce-products-block-editor',
292308
plugins_url( 'build/products-block.css', __FILE__ ),
293-
array( 'wp-edit-blocks' ),
309+
array( 'wc-vendors', 'wp-edit-blocks' ),
294310
wgpb_get_file_version( '/build/products-block.css' )
295311
);
296312

297313
wp_register_style(
298314
'wc-featured-product-editor',
299315
plugins_url( 'build/featured-product.css', __FILE__ ),
300-
array( 'wp-edit-blocks' ),
316+
array( 'wc-vendors', 'wp-edit-blocks' ),
301317
wgpb_get_file_version( '/build/featured-product.css' )
302318
);
303319

@@ -312,6 +328,7 @@ function wgpb_register_scripts() {
312328
*/
313329
function wgpb_get_file_version( $file ) {
314330
if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) {
331+
$file = trim( $file, '/' );
315332
return filemtime( plugin_dir_path( __FILE__ ) . $file );
316333
}
317334
return WGPB_VERSION;

0 commit comments

Comments
 (0)