This repository has been archived on 2025-01-19. You can view files and clone it, but cannot push or open issues or pull requests.
oliverdavies.uk-old-sculpin/source/_posts/2014-10-21-updating-features-and-adding-components-using-drush.md

3 KiB

title tags use
Updating Features and Adding Components Using Drush
drupal
drupal-planet
drush
features
posts

{% block excerpt %} If you use the Features module to manage your Drupal configuration, it can be time consuming to update features through the UI, especially if you are working on a remote server and need to keep downloading and uploading files.

If you re-create a feature through the UI, you'll be prompted to download a new archive of the feature in its entirety onto your local computer. You could either commit this into a local repository and then pull it remotely, or use a tool such as SCP to upload the archive onto the server and commit it from there. You can simplify this process by using Drush. {% endblock %}

{% block content %}

Finding Components

To search for a component, use the drush features-components command. This will display a list of all components on the site. As we're only interested in components that haven't been exported yet, add the --not-exported option to filter the results.

To filter further, you can also use the grep command to filter the results. For example, drush features-components --not-exported field_base | grep foo, would only return non-exported field bases containing the word "foo".

The result is a source and a component, separated by a colon. For example, field_base:field_foo.

Exporting the Feature

Once you have a list of the components that you need to add, you can export the feature. This is done using the drush features-export command, along with the feature name and the component names.

For example:

$ drush features-export -y myfeature field_base:field_foo field_instance:user-field_foo

In this example, the base for field_boo and it's instance on the user object is being added to the "myfeature" feature.

If you are updating an existing feature, you'll get a message informing you that the module already exists and asking if you want to continue. This is fine, and is automatically accepted by including -y within the command. If a feature with the specified name doesn't exist, it will be created.

If you're creating a new feature, you can define where the feature will be created using the --destination option.

Once complete, you will see a confirmation message.

Created module: my feature in sites/default/modules/custom/features/myfeature

The Result

Once finished, the feature is updated in it's original location, so there's no download of the feature and then needing to re-upload it. You can add and commit your changes into Git or continue with your standard workflow straight away.