Releases: alfa-laboratory/arui-feather
v17.3.0
v17.2.0
v17.1.0
v17.0.0
В этом релизе мы собрали все последние изменения за последние 3 месяца
Typescript Migration
Мы полностью мигрировали на typescript то что ранее было описано в propTypes.
Это позволит в дальнейшем отказаться от кода генерации типов из javascript (https://github.com/alfa-laboratory/library-utils/blob/master/typings/stringify-component-definition.js#L4)
и упростить процесс сборки либ в целом.
Также это позволит описывать типы более качественно и получить все прелести разработки на typescript в самом arui-feather.
Важно для вас относительно предыдущих типов — мы перестали экспортить часть типов пропс.
Было
import Button, { ButtonFieldSizeType } from 'arui-feather/button';
let size: ButtonFieldSizeType;
Стало
import Button, { ButtonProps } from 'arui-feather/button';
let size: ButtonProps['size'];
Раньше эти типы генерировались, теперь так как они ровно те, которые мы написали — придется поддерживать такой нейминг. Но мы не можем доверять эту проверку людям, поэтому мы убираем такую возможность. У вас всё также остается возможность достать нужный тип того же качества, как в примере выше. Просто выглядит это чуть не так.
@cn -> bem-react-classname
Мы полностью мигрировали c cn-decorator на bem-react-classname. Это позволит перевести arui-private на bem-react-classname и далее заменить решение в приложениях. Сама мотивация bem-react-classname — это тайпскриптовая валидация внутри компонента и возможность использовать в функциональных компонентах. Мы просто разблокировали использование одного решения централизованно.
Теперь вам доступна функция, которая позволит вам получить тему из провайдера:
import { withTheme } from 'arui-feather/cn';
Неосвещенная тема:
import Button from 'arui-feater/button' // импортируется компонент обернутый в withTheme и импортируются стили
import Button from 'arui-feater/button/button' // импортируется компонент обернутый в withTheme
import { Button } from 'arui-feater/button/button' // импортируется компонент без css
import { Button } from 'arui-feater/button' // импортируется компонент c css но без withTheme
@performance больше не нужен
Много кто спрашивал что за архаизм @performance, честь же React.PureComponent. Во времена cn-decorator вам необходимо было обернуть ваш компонент декоратором @performance. Просто потому что @cn внутри использовал context.theme и перерендеривал компонент в момент изменения темы, добавляя нужные классы. Если у вас используется bem-react-classname — вам больше не нужен @performance. Используйте обычный React.PureComponent, но если вам нужно поддержать тему в компоненте — оберните ваш компонент:
import { withTheme } from 'arui-feather/cn';
...
export default withTheme(MyComponent);
В arui-feather мы избавились от @performance()
, однако есть еще такая штука как @performance(true)
, от которой нужно избавляться более аккуратно.
@performance
будет считаться как deprecated и будет удалена в следующем мажорном релизе.
Stopped Component injecting support
Поскольку мы отказались от cn-decorator, мы не используем https://github.com/alfa-laboratory/cn-decorator#di-components-. Эта функциональность не нашла поддержки у потребителей и не является более рекомендуемой.
Removed unnecessary polyfills
arui-feather поставлял полифилов больше чем нужно для работы библиотеки.
Для развития популярной библиотеки важно держать в ней только код нужный для ее работы.
Мы удалили modernizr
Modernizr вызывал у нас боли с поддержкой билд утилит и пакетов для того чтоб он работал, поэтому и отправился на покой.
@autoBind
Внутри библиотеки мы больше не используем @autoBind в угоду упрощения кода.
React 16.8+
Пока мы добавили UNSAFE, но чуть позже сделаем полноценный мигрейшн.
Contribution
Мы восстанавливаем регулярные встречи меёнтейнеров и активную работу по развитию библиотеки компонентов.
Наши ценности:
- Мы не любим незакрытые вопросы.
- Задача должна быть настолько мелкой, чтобы её можно было быстро зарелизить.
- Изменение должно затрагивать только то, что нужно по задаче.
- Уважаем тех, кто видит проблему и кидает PR.
- Помогаем друг другу изо всех сил.
Мы ведём задачи в issues. Для обсуждения есть чат мейнтейнеров (#arui-maintainers).
Описали процесс контрибьюта.
Огромное спасибо всем участникам подготовки релиза 👏