Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BREAKING CHANGE][Feature]: обфусцировать названия локальных CSS-переменных #7607

Open
inomdzhon opened this issue Sep 17, 2024 · 5 comments

Comments

@inomdzhon
Copy link
Contributor

inomdzhon commented Sep 17, 2024

Речь о --vkui_internal_*

Для чего?

  1. сократить размер бандла;
  2. предупредить использование извне.

Нюансы

  1. Необходимо обрабатывать как CSS, так и JS, т.к. --vkui_internal_* используется там и там.

  2. Следует запускать только для production сборки, development и test окружения исключаем.

    Стоит учитывать, что может использоваться в настройках документации Styleguide

Ссылки

@inomdzhon inomdzhon added this to the v7.0.0-beta.0 milestone Sep 17, 2024
@inomdzhon inomdzhon added this to VKUI Sep 17, 2024
@github-project-automation github-project-automation bot moved this to 🗃 Backlog in VKUI Sep 17, 2024
@inomdzhon inomdzhon moved this from 🗃 Backlog to 🔜 To do in VKUI Sep 17, 2024
@egorprnn
Copy link
Contributor

egorprnn commented Sep 20, 2024

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

@egorprnn
Copy link
Contributor

может рассмотреть решение в виде описании в документации как такое настраивать на уровне сборщиков, чтобы разработчики самостоятельно конфигурировали это относительно потребностей

@SevereCloud
Copy link
Contributor

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

Внутренние css переменные на то и внутренние чтобы их можно было делать с ними что хочешь не нарушая контрактных обязательств абстракции. Если что-то требуется, необходимо делать это через публичные интерфейсы. Без инкапсуляции мы далеко не уедем


По реализации: требуется делать свои swc и postcss плагины

swc

// Input Code
import properties from "./style.css" with { type: "property_modules" };
element.innerHTML = '<div style="' + properties['--vkui_internal_prop'] + '=12">';

// Output   ↓ ↓ ↓ ↓ ↓ ↓
element.innerHTML = '<div style="' + '--vkui_internal_prop__clZD5' + '=12">';

postcss

// Input Code
.host {
  width: var(--vkui_internal_prop)'
}

// Output   ↓ ↓ ↓ ↓ ↓ ↓
.host {
  width: var(--vkui_internal_prop__clZD5)'
}

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

@inomdzhon
Copy link
Contributor Author

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

Под "хэшами с ручками", что ты имеешь ввиду?


Я думал, кстати, не хэшировать, а сокращать, например:

// Input Code
.host {
  width: var(--vkui_internal_Button-color)'
}

// Output   ↓ ↓ ↓ ↓ ↓ ↓
.host {
  width: var(--_vkuiBc)'
}

На основе ресёрча https://github.com/inomdzhon/test-vkui-css-hash

@SevereCloud
Copy link
Contributor

SevereCloud commented Sep 23, 2024

Под "хэшами с ручками", что ты имеешь ввиду?

Прямо в коде проставить рандомные буквы похожие на хэш

Я думал, кстати, не хэшировать, а сокращать

  1. Могут быть пересечения при сокращениях
  2. Такие сокращения не предупреждают "использования из вне"
  3. Логика сокращений сложно описуема(ее нужно зашивать в плагинах)

@inomdzhon inomdzhon modified the milestones: v7.0.0-beta.0, v7.0.0-beta.1 Oct 1, 2024
@inomdzhon inomdzhon removed this from the v7.0.0-beta.2 milestone Nov 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: 🔜 To do
Development

No branches or pull requests

3 participants