Is there a better way to style fields?
I had a project that needed some specific markup for different fields, using field.html.twig only at least saved managing multiple files.

field.html.twig:

{%
  set themeGroupOne = [
    'first_field',
    'second_field',
  ]
%}

{%
  set themeGroupTwo = [
    'third_field',
    'fourth_field',
  ]
%}

{# field markup option #}
{% if field_name in themeGroupOne %}

  {% for item in items %}
    {{ item.content }}
  {% endfor %}

{# field markup option #}
{% elseif field_name in themeGroupTwo %}

  {% for item in items %}
    {{ item.content }}
  {% endfor %}

{# Final option, default field template #}
{% else %}

{% if label_hidden %}
&lt;span{{ attributes.addClass('field', field_type | clean_class, field_name | clean_class) }}&gt;
  {% if multiple %}
    {% for item in items %}
      &lt;span{{ item.attributes.addClass('field-item', field_type | clean_class ~ '-item', field_name | clean_class ~ '-item') }}&gt;{{ item.content }}&lt;/span&gt;
    {% endfor %}
  {% else %}
    {% for item in items %}
      {{ item.content }}
    {% endfor %}
  {% endif %}
&lt;/span&gt;
{% else %}
&lt;label{{ title_attributes.addClass(field_type | clean_class, field_name | clean_class) }}&gt;{{ label }}&lt;/label&gt;
&lt;span{{ attributes.addClass('field', 'with-label', field_type | clean_class, field_name | clean_class) }}&gt;
  {% if multiple %}
    {% for item in items %}
      &lt;span{{ item.attributes.addClass('field-item', field_type | clean_class ~ '-item', field_name | clean_class ~ '-item') }}&gt;{{ item.content }}&lt;/span&gt;
    {% endfor %}
  {% else %}
    {% for item in items %}
      {{ item.content }}
    {% endfor %}
  {% endif %}
&lt;/span&gt;
{% endif %}


*Note that the two fields:


field.field.paragraph.paragraph_type.field_h2 
field.field.node.node_type.field_h2


will both register as field_name == 'field_h2' in field.html.twig, making it even easier to theme fields across your site.