This is an outline how we're using the devel_config module to enable configuration in a way like a bit like features.
Using git flow and having had a love hate relationship with Drupal features (now not reccomended) I wanted an alternative approach to using a feature based development work flow and after some experiment we are using the following method in our team.
drush si on a regular basis without shuddering (hey it's not D7 days anymore!)If you want you can define your profile as the default and then you can override it like this: drush site-install standard - installs with standard profile rather the new default
//filename=yourprofile.info.yml
name: 'YOURPROFILE base config'
type: profile
description: 'Some base config for home page and modules etc.'
core: 8.x
version: 0.1-dev
# Optional: Declare your installation profile as a distribution
# This will make the installer auto-select this installation profile.
# The distribution_name property is used in the installer and other places as
# a label for the software being installed.
distribution:
  name: Your profile
dependencies:
  - admin_toolbar
  - admin_toolbar_tools
  - automated_cron
  - backup_migrate
  - block
  - block_content
  - breakpoint
  - ckeditor
  - color
  - comment
  - config
  - config_devel
  - contact
  - contextual
  - datetime
  - dblog
  - default_content
  - dynamic_page_cache
  - editor
  - entity_reference
  - feeds
  - feeds_ex
  - field
  - field_ui
  - file
  - filter
  - help
  - history
  - image
  - kint
  - layout_discovery
  - menu_link_content
  - menu_ui
  - node
  - options
  - page_cache
  - path
  - pathauto
  - pathologic
  - quickedit
  - rdf
  - responsive_image
  - revision_log_default
  - search
  - settings_tray
  - shortcut
  - slick
  - syslog
  - taxonomy
  - telephone
  - text
  - toolbar
  - tour
  - update
  - user
  - views
  - views_ui
  # Custom modules
  - project_custom_module
themes:
  - project_theme
  - sevenHave a look at the devel_config project page.  Essentially you are capturing the config names in your module.info file and then using drush to export the configuration into the module directory.  It is then enabled when you enable the module.
drupal ce to export the complete site config - get the directory locationcd to-configuration-sync-direcoryls | grep CONTENT_TYPE_NAME|FIELD_NAME|OR_WHATEVER and check the list of config file names - make sure you got everything - display formats whatever!module.info.yml under optional - it will look something like this:name: PROJECT module_name
type: module
description: 'Description goes here.'
core: 8.x
package: PROJECTACRONYM
version: 0.1-dev
dependencies:
  - entity_browser
  - node
  - user
  - default_content
  - config_devel
  - feeds
  - feeds_ex
  - views
config_devel:
  install:
  optional:
    - core.base_field_override.node.CONTENT_TYPE.title
    - core.entity_form_display.node.CONTENT_TYPE.defaultYou will want to remove the yml file extension.
You can see that there is a naming convention and package. Naming things sensibly and consistently helps a lot in projects and should be agreed at project start. It also means things you can do things like:
drush pml --package=PROJECTACRONYM --field=name | xargs -I % drush cde %To export the config for all of the package at once (works on OSX, might need changing for *NIX)
drush config-devel-export or cde, cd-em for short - you should see the new config in your module directorydrush sql-dump FILENAME.TIMEdrush si to refresh your configdrush en MODULEAt first we had this within the feature modules, and for some things this makes sense (like taxonomy terms you need as structure) but there can be dependency issues that are hard to trroubleshoot and it feels cleaner to have most of the default content (a lot of which is for test?) in their own module which can then be enabled post install as needed with drush.
We had trouble with paragraphs which will hopefully be fixed.  Also content with a lot of references needs a different work flow - rather than using module.info.yml to export content by module drush default-content:export-module module_name rather use:
drush dcer node [NID] --folder=modules/custom/PROJECT/PROJECT_test_content/contentWhich will spit out all the associated content, even user which you may wish to delete.
drush dcer [NID]sync foldersystem.?