Cómo evitar dependencias duplicadas en bloques de Gutenberg
El script de construcción de bloques Gutenberg de WordPress utiliza wordpress/dependency-extraction-webpack-plugin para construir los bloques sin que se repitan las dependencias de WordPress, pero ¿qué pasa con otras dependencias?
Si construyo un plugin con 10 bloques y todos reutilizan dependencias, el script de construcción de WordPress incrustará la dependencia en cada paquete de bloque.
¿Existe una buena manera de manejar esto sin tener que recrear manualmente la construcción de Webpack?

El plugin de extracción de dependencias de WordPress @wordpress/dependency-extraction-webpack-plugin
básicamente hace que tus importaciones de dependencias ES6 utilicen los scripts de WordPress en lugar de agregarlos al paquete una y otra vez.
Esto hace que los módulos registrados y encolados en WordPress (incluyendo pero no limitados a jquery
, moment
, react
y módulos wp.*
) sean excluidos correctamente de las compilaciones.
Puedes agregar dependencias adicionales para excluir (asegúrate de registrarlas/encolarlas en WordPress) con la función callback requestToHandle
.
Por ejemplo, para excluir el componente react-sortable
de la compilación registrado como script react-sortable
en WordPress (PHP),
module.exports = {
plugins: [
new DependencyExtractionWebpackPlugin( {
requestToHandle: function ( module ) {
if ( module === 'react-sortable' ) {
return 'react-sortable'; // Handle del script en WordPress
}
}
} ),
]
}

¿Dónde agregas esto? Estoy usando wp-scripts build
para construir. La configuración de webpack está oculta.
