Как избежать дублирования зависимостей в блоках Gutenberg
Скрипт сборки блоков WordPress Gutenberg использует wordpress/dependency-extraction-webpack-plugin для сборки блоков без повторения зависимостей WordPress, но что делать с другими зависимостями?
Если я собираю плагин с 10 блоками, и все они используют одни и те же зависимости, сборщик WordPress будет включать эти зависимости в каждый бандл блока.
Есть ли хороший способ решить эту проблему без необходимости пересоздавать сборку webpack самостоятельно?

Плагин WordPress для извлечения зависимостей @wordpress/dependency-extraction-webpack-plugin
позволяет использовать скрипты WordPress вместо многократного добавления зависимостей в сборку при импорте ES6.
Это позволяет корректно исключать из сборки модули, зарегистрированные и подключенные в WordPress (включая, но не ограничиваясь jquery
, moment
, react
и модули wp.*
).
Вы можете добавить дополнительные зависимости для исключения (убедитесь, что они зарегистрированы/подключены в WordPress) с помощью callback-функции requestToHandle
.
Например, для исключения компонента react-sortable
из сборки, зарегистрированного как скрипт react-sortable
в WordPress (PHP):
module.exports = {
plugins: [
new DependencyExtractionWebpackPlugin( {
requestToHandle: function ( module ) {
if ( module === 'react-sortable' ) {
return 'react-sortable'; // Название скрипта в WordPress
}
}
} ),
]
}

Куда это нужно добавить? Я использую wp-scripts build
для сборки. Конфиг webpack скрыт.
