This module aims to cover development needs with managing configurations during project development.

Importing all configs during development is not convenient and can lead to a bad behaviour with overwriting or deleting configs or content from a site.

So there is a need for importing only of specific configs via hook_update_N().


All the work happening with the config_import.importer service. Let's instantiate it:

/* @var \Drupal\config_import\ConfigImporterServiceInterface $config_importer */
$config_importer = \Drupal::service('config_import.importer');

By default, import and export operations will use the sync directory. But, if needed, it could be changed to a path of existing directory or type of already configured configuration directories. For instance:

// $config_importer->setDirectory(CONFIG_STAGING_DIRECTORY);

You may do so to import existing configs:


And export can be achieved with a similar construction:


Features integration

To revert/import features you have to enable the features module first:

drush en features -y

Get instance of service:

/* @var \Drupal\config_import\ConfigFeaturesImporterServiceInterface $features_importer */
$features_importer = \Drupal::service('config_import.features_importer');

And do the import:

$features_importer->importFeatures(['feature1', 'feature2']);

Drush integration

Execute the next command to see the list of available commands from a group:

drush help --filter=config_import

Then use the following syntax to find out more information about concrete command:

drush help COMMAND_NAME

Example use cases

 * Revert custom block feature.
function ygh_master_update_8024() {

 * Update HTML format config.
function ygh_master_update_8025() {
  /* @var \Drupal\config_import\ConfigImporterServiceInterface $config_importer */
  $config_importer = \Drupal::service('config_import.importer');

To do

  • Create UI for making manual config changes convenient

Video about this module:

For updating specific property in config:

1) go to related to this config module

2) create new hook_update_N in openy_*.install file

3) in update add next code (this is example):

$config = drupal_get_path('module', 'openy_media_image') . '/config/install/views.view.images_library.yml';
$config_importer = \Drupal::service('config_import.param_updater');
$config_importer->update($config, 'views.view.images_library', 'display.default.display_options.pager');


  • $config variable contains path to config with config name
  • "views.view.images_library" - config name
  • "display.default.display_options.pager" - config specific property (you can set value from a nested array with variable depth)

Supporting organizations: 

Project Information