1- // Load the default @wordpress /scripts config object
21const defaultConfig = require ( '@wordpress/scripts/config/webpack.config' ) ;
3- const DependencyExtractionWebpackPlugin = require ( '@wordpress/dependency-extraction-webpack-plugin' ) ;
4- const path = require ( 'path' ) ;
2+ const WooCommerceDependencyExtractionWebpackPlugin = require ( '@woocommerce/dependency-extraction-webpack-plugin' ) ;
53
64const requestToExternal = ( request ) => {
7- // The following default externals are bundled for compatibility with older versions of WP
8- // Note CSS for specific components is bundled via admin/assets/src/index.scss
9- // WP 5.4 is the min version for <Card* />, <TabPanel />
10- const bundled = [
11- '@wordpress/compose' ,
12- '@wordpress/components' ,
13- '@wordpress/primitives' ,
14- ] ;
5+ // Bundle these packages & components so we can use the latest, independent of WordPress version.
6+ // Without bundling these specific recent versions, components like LandingPageApp don't render correctly.
7+ const bundled = [ '@wordpress/components' ] ;
158 if ( bundled . includes ( request ) ) {
169 return false ;
1710 }
18-
19- const wcDepMap = {
20- '@woocommerce/navigation' : [ 'wc' , 'navigation' ] ,
21- } ;
22-
23- return wcDepMap [ request ] ;
2411} ;
2512
26- const requestToHandle = ( request ) => {
27- const wcHandleMap = {
28- '@woocommerce/components' : 'wc-components' ,
29- '@woocommerce/navigation' : 'wc-navigation' ,
30- } ;
31-
32- return wcHandleMap [ request ] ;
33- } ;
13+ // Replace the default DependencyExtractionWebpackPlugin with the Woo version
14+ // and override to bundle specific newer packages (see requestToExternal above).
15+ const ourPlugins = [
16+ ...defaultConfig . plugins . filter (
17+ ( plugin ) =>
18+ plugin . constructor . name !== 'DependencyExtractionWebpackPlugin'
19+ ) ,
20+ new WooCommerceDependencyExtractionWebpackPlugin ( {
21+ injectPolyfill : true , // TBD Confirm this is needed for Pinterest.
22+ requestToExternal,
23+ } ) ,
24+ ] ;
3425
35- // Use the defaultConfig but replace the entry and output properties
26+ // Webpack config for main admin app - onboarding and settings.
3627const SetupGuide = {
37- ...defaultConfig ,
38- resolve : {
39- ...defaultConfig . resolve ,
40- alias : {
41- '.~' : path . resolve ( process . cwd ( ) , 'assets/source/' ) ,
42- } ,
43- // Resolve jsx/tsx files for `@woocommerce/data`...`/with-plugins-hydration`
44- extensions : [ '.js' , '.jsx' , '.json' ] ,
28+ ...defaultConfig ,
29+ plugins : ourPlugins ,
30+ entry : {
31+ index : './assets/source/setup-guide/index.js' ,
4532 } ,
46- plugins : [
47- ...defaultConfig . plugins . filter (
48- ( plugin ) =>
49- plugin . constructor . name !== 'DependencyExtractionWebpackPlugin'
50- ) ,
51- new DependencyExtractionWebpackPlugin ( {
52- injectPolyfill : true ,
53- requestToExternal,
54- requestToHandle,
55- } ) ,
56- ] ,
57- entry : {
58- index : './assets/source/setup-guide/index.js' ,
59- } ,
60- output : {
33+ output : {
6134 ...defaultConfig . output ,
62- filename : '[name].js' ,
63- path : __dirname + '/assets/setup-guide' ,
64- } ,
35+ filename : '[name].js' ,
36+ path : __dirname + '/assets/setup-guide' ,
37+ } ,
6538} ;
6639
40+ // Webpack config for script to add our setup task.
6741const SetupTask = {
68- ...defaultConfig ,
69- resolve : {
70- ... defaultConfig . resolve ,
71- alias : {
72- '.~' : path . resolve ( process . cwd ( ) , 'assets/source/' ) ,
73- } ,
74- // Resolve jsx/tsx files for `@woocommerce/data`...`/with-plugins-hydration`
75- extensions : [ '.ts' , '.tsx' , '.js' , '.jsx' , '.json' ] ,
42+ ...defaultConfig ,
43+ plugins : ourPlugins ,
44+ entry : {
45+ index : './assets/source/setup-task/index.js' ,
46+ } ,
47+ output : {
48+ filename : '[name].js' ,
49+ path : __dirname + '/assets/setup-task' ,
7650 } ,
77- plugins : [
78- ...defaultConfig . plugins . filter (
79- ( plugin ) =>
80- plugin . constructor . name !== 'DependencyExtractionWebpackPlugin'
81- ) ,
82- new DependencyExtractionWebpackPlugin ( {
83- injectPolyfill : true ,
84- requestToExternal,
85- requestToHandle,
86- } ) ,
87- ] ,
88- entry : {
89- index : './assets/source/setup-task/index.js' ,
90- } ,
91- output : {
92- filename : '[name].js' ,
93- path : __dirname + '/assets/setup-task' ,
94- } ,
9551} ;
9652
97- module . exports = [
98- SetupGuide ,
99- SetupTask
100- ] ;
53+ module . exports = [ SetupGuide , SetupTask ] ;
0 commit comments