Спасение рядового оверрайда
Спасение рядового оверрайда

Спасение рядового оверрайда

Опубликовано
Кратко
Автор
Темы
Дата
January 15, 2023

Саша Окунев для профи

15 января 2023

Как безопасно накатывать обновления на компоненты из библиотек в Figma

Проблема

Когда работаешь в большом проекте, в котором используются библиотеки, всегда есть риск, что что-то сломается. Например, может прилететь обновление компонента, у которого изменилась структура, а на его экземплярах (instance) были настроены оверрайды.

Это приводит к тому, что после апдейта экземпляр в файле потеряет контент, который в нём был.

Когда у нас сотни файлов и экранов в них, слетевший ценный контент может стать большой проблемой для команды. Так что мы, как хранители UI-кита, бережём нервы наших дизайнеров и следим за тем, чтобы ни у кого ничего не слетело.

С этим можно бороться через функцию Review Updates. В этом уроке я покажу, как при помощи неё последовательно восстановить контент в каждом экземпляре.

Файлы урока

Для начала рассмотрим файл библиотеки. Его можно скачать из Community и повторить урок самостоятельно.

Напомню, что функция библиотек доступна в Figma начиная с тарифа Professional.

В библиотеке мы видим два компонента:

- screen-header

- number

image

screen-header можно использовать для оформления макетов. Он содержит место для заголовка экрана, описание и порядковый номер. На его примере будем менять структуру, чтобы контент слетал, а мы его восстановили.

image

Теперь посмотрим на макет с экземплярами. Его придётся воссоздать самостоятельно.

Как воссоздать?

Для этого нужно:

  1. Опубликовать библиотеку в своей команде.
  2. Добавить в новый файл несколько экземпляров sceen-header и прописать номера в оверрайдах текстового слоя 00.

Видим, что в оверрайдах прописаны номера экранов.

image

1

Допустим, мы хотим вместо обычного текстового слоя с номером экрана подставить компонент number. Это довольно серьёзно изменит структуру screen-header. Как мы видим, в его экземплярах прописаны номера, они сто процентов слетят, когда мы обновим компонент. Figma не сможет сопоставить простой текстовый слой и компонент number, в котором тоже есть текстовый слой.

❤️
Видно, как Figma работает над тем, чтобы максимально бережно сохранять контент при обновлении компонента. До недавнего времени даже перенос слоя из одного автолейаута в другой приводил к потере контента в оверрайдах, но в новых версиях Figma этого больше не происходит.

Итак, погнали.

2

В файле библиотеки подменяем текстовый слой для номеров экземпляром number.

Для этого удобно использовать функцию

, клавиша Shift Cmd R.

image

3

Публикуем библиотеку, чтобы донести обновление до файла. Нажимаем Publish.

image

И ещё раз.

image

4

Теперь переходим в файл макета. У меня он называется slashdesigner.

При его открытии появится плашка Component updates available. Нажимаем Review.

image

5

Видим список обновившихся компонентов файла. Не нажимаем Update или Update all сразу, а нажимаем на компонент в списке или на шеврон.

image

6

Оказываемся на экране сравнения версий. Видим, что на одном из экземпляров контент с номером экрана 3 был потерян и заменён на пустой number.

В данном случае из контента всего один символ, но если текст длинный, удобно в этот момент сделать скриншот левой версии, чтобы на следующем шаге восстановить его вручную.

Нажимаем Update instance. Так мы оставим в этом экземпляре свежую версию справа.

image

7

Видим, что экземпляр обновился.

image

8

Хитрость: не закрываем окно Review updates, а отодвигаем его в сторону, чтобы не загораживало основной редактор. Это позволит вернуться к процессу сравнения позже.

image

9

По желанию. Если сделали скриншот на шаге 6, вставляем его рядом с обновлённым экземпляром, чтобы было удобно с ним сверяться.

image

10

Восстанавливаем потерянный контент. После этого удаляем скриншот, он больше не нужен.

image

11

Возвращаем на центр экрана отодвинутое ранее окно Review updates и нажимаем кнопку Next instance, чтобы перейти к ревью следующего экземпляра.

image

12

Figma фокусирует нас на следующем экземпляре. Восстанавливаем его контент аналогично первому. Повторяем шаги 6-12, пока экземпляры не закончатся.

image

13

Мы восстановили все слетевшие оверрайды компонента screen-header.

image

14

Последний, перестраховочный шаг для макетов, в которых давно не обновляли компоненты. Если есть другие компоненты, которые требуют аналогичного ревью, нажимаем Back в верхнем левом углу и возвращаемся на экран Updates. Убеждаемся, что он пуст и мы ничего не забыли. Теперь можно закрыть окно. ⏹️

image

— образовательный телеграм-канал о продуктовом дизайне и инструментах для него, о карьере дизайнера и эмиграции. Опечатки и обратную связь → @okunev