Skip to content

plasma-themes: Expose ESM subpaths via exports field#2803

Merged
Yakutoc merged 1 commit into
devfrom
fix-plasma-tokens-exports
May 26, 2026
Merged

plasma-themes: Expose ESM subpaths via exports field#2803
Yakutoc merged 1 commit into
devfrom
fix-plasma-tokens-exports

Conversation

@Yakutoc
Copy link
Copy Markdown
Collaborator

@Yakutoc Yakutoc commented May 25, 2026

Core

Plasma-themes

  • добавлены явные пути для exports токенов

What/why changed

Без `exports` потребитель резолвит `@salutejs/plasma-themes/tokens` и
`@salutejs/plasma-themes/tokens/<theme>` напрямую в CJS-копию (`tokens/*.js`),
которую Rollup/Vite не tree-shake-ит — в бандл попадают все ~2k токенов
независимо от того, сколько потребитель реально использует.

Маршрутизирует subpath-ы на уже собираемую ESM-копию (`es/tokens/*`,
`es/themes/*`), где каждый токен — отдельный `export var X = 'var(--...)'`,
который шейкается до фактически использованных.

Маппинг покрывает все известные публичные subpath-ы: `.`, `./tokens`,
`./tokens/*`, `./themes`, `./themes/*`, `./css/*`, `./package.json`.

Legacy-путь `./es/themes/*` (используется в сторибуках и пакетных
mixins по всей монорепе) оставлен в `exports` без `require`-варианта
для обратной совместимости — последующая миграция на `./themes/*`
рекомендуется, но не блокирует релиз.

Эффект на бандл потребителя (Vite): chunk `plasma-themes` 325 KB raw /
28.6 KB gz → 6.7 KB raw / 1.5 KB gz.

детали в #2792

Примечание:

В целом запись в exports

  "./es/themes": {
      "import": "./es/themes/index.js",
      "types": "./themes/index.d.ts"
    },

явный рудимент того что мы используем в stories

import { plasma_giga__dark, plasma_giga__light } from '@salutejs/plasma-themes/es/themes';

после исправлений - упростим exports.

Наглядный пример, ошибка сборки во всех пакетах где использовался plasma-themes

■  [commonjs--resolver] Missing "./es/themes" specifier in
│  "@salutejs/plasma-themes" package
📦 Published PR as canary version: Canary Versions

✨ Test out this PR locally via:

npm install @salutejs/plasma-asdk@0.376.0-canary.2803.26415962419.0
npm install @salutejs/plasma-b2c@1.618.0-canary.2803.26415962419.0
npm install @salutejs/plasma-core@1.226.0-canary.2803.26415962419.0
npm install @salutejs/plasma-giga@0.345.0-canary.2803.26415962419.0
npm install @salutejs/plasma-homeds@0.345.0-canary.2803.26415962419.0
npm install @salutejs/plasma-hope@1.372.0-canary.2803.26415962419.0
npm install @salutejs/plasma-icons@1.238.0-canary.2803.26415962419.0
npm install @salutejs/plasma-new-hope@0.362.0-canary.2803.26415962419.0
npm install @salutejs/plasma-tokens-b2b@1.55.0-canary.2803.26415962419.0
npm install @salutejs/plasma-tokens-b2c@0.66.0-canary.2803.26415962419.0
npm install @salutejs/plasma-tokens-web@1.70.0-canary.2803.26415962419.0
npm install @salutejs/plasma-tokens@1.138.0-canary.2803.26415962419.0
npm install @salutejs/plasma-typo@0.43.0-canary.2803.26415962419.0
npm install @salutejs/plasma-ui@1.348.0-canary.2803.26415962419.0
npm install @salutejs/plasma-web@1.620.0-canary.2803.26415962419.0
npm install @salutejs/sdds-bizcom@0.350.0-canary.2803.26415962419.0
npm install @salutejs/sdds-cs@0.354.0-canary.2803.26415962419.0
npm install @salutejs/sdds-dfa@0.348.0-canary.2803.26415962419.0
npm install @salutejs/sdds-finai@0.341.0-canary.2803.26415962419.0
npm install @salutejs/sdds-insol@0.345.0-canary.2803.26415962419.0
npm install @salutejs/sdds-netology@0.349.0-canary.2803.26415962419.0
npm install @salutejs/sdds-os@0.20.0-canary.2803.26415962419.0
npm install @salutejs/sdds-platform-ai@0.349.0-canary.2803.26415962419.0
npm install @salutejs/sdds-sbcom@0.350.0-canary.2803.26415962419.0
npm install @salutejs/sdds-scan@0.348.0-canary.2803.26415962419.0
npm install @salutejs/sdds-serv@0.349.0-canary.2803.26415962419.0
npm install @salutejs/core-themes@0.30.0-canary.2803.26415962419.0
npm install @salutejs/plasma-themes@0.50.0-canary.2803.26415962419.0
npm install @salutejs/sdds-themes@0.65.0-canary.2803.26415962419.0
npm install @salutejs/sdds-api-tests@0.7.0-canary.2803.26415962419.0
npm install @salutejs/plasma-cy-utils@0.156.0-canary.2803.26415962419.0
npm install @salutejs/plasma-sb-utils@0.226.0-canary.2803.26415962419.0
npm install @salutejs/plasma-tokens-utils@0.51.0-canary.2803.26415962419.0
# or 
yarn add @salutejs/plasma-asdk@0.376.0-canary.2803.26415962419.0
yarn add @salutejs/plasma-b2c@1.618.0-canary.2803.26415962419.0
yarn add @salutejs/plasma-core@1.226.0-canary.2803.26415962419.0
yarn add @salutejs/plasma-giga@0.345.0-canary.2803.26415962419.0
yarn add @salutejs/plasma-homeds@0.345.0-canary.2803.26415962419.0
yarn add @salutejs/plasma-hope@1.372.0-canary.2803.26415962419.0
yarn add @salutejs/plasma-icons@1.238.0-canary.2803.26415962419.0
yarn add @salutejs/plasma-new-hope@0.362.0-canary.2803.26415962419.0
yarn add @salutejs/plasma-tokens-b2b@1.55.0-canary.2803.26415962419.0
yarn add @salutejs/plasma-tokens-b2c@0.66.0-canary.2803.26415962419.0
yarn add @salutejs/plasma-tokens-web@1.70.0-canary.2803.26415962419.0
yarn add @salutejs/plasma-tokens@1.138.0-canary.2803.26415962419.0
yarn add @salutejs/plasma-typo@0.43.0-canary.2803.26415962419.0
yarn add @salutejs/plasma-ui@1.348.0-canary.2803.26415962419.0
yarn add @salutejs/plasma-web@1.620.0-canary.2803.26415962419.0
yarn add @salutejs/sdds-bizcom@0.350.0-canary.2803.26415962419.0
yarn add @salutejs/sdds-cs@0.354.0-canary.2803.26415962419.0
yarn add @salutejs/sdds-dfa@0.348.0-canary.2803.26415962419.0
yarn add @salutejs/sdds-finai@0.341.0-canary.2803.26415962419.0
yarn add @salutejs/sdds-insol@0.345.0-canary.2803.26415962419.0
yarn add @salutejs/sdds-netology@0.349.0-canary.2803.26415962419.0
yarn add @salutejs/sdds-os@0.20.0-canary.2803.26415962419.0
yarn add @salutejs/sdds-platform-ai@0.349.0-canary.2803.26415962419.0
yarn add @salutejs/sdds-sbcom@0.350.0-canary.2803.26415962419.0
yarn add @salutejs/sdds-scan@0.348.0-canary.2803.26415962419.0
yarn add @salutejs/sdds-serv@0.349.0-canary.2803.26415962419.0
yarn add @salutejs/core-themes@0.30.0-canary.2803.26415962419.0
yarn add @salutejs/plasma-themes@0.50.0-canary.2803.26415962419.0
yarn add @salutejs/sdds-themes@0.65.0-canary.2803.26415962419.0
yarn add @salutejs/sdds-api-tests@0.7.0-canary.2803.26415962419.0
yarn add @salutejs/plasma-cy-utils@0.156.0-canary.2803.26415962419.0
yarn add @salutejs/plasma-sb-utils@0.226.0-canary.2803.26415962419.0
yarn add @salutejs/plasma-tokens-utils@0.51.0-canary.2803.26415962419.0

@github-actions
Copy link
Copy Markdown
Contributor

Theme Builder app deployed!

https://plasma.sberdevices.ru/pr/plasma-theme-builder-pr-2803/

@github-actions
Copy link
Copy Markdown
Contributor

Documentation preview deployed!

website: https://plasma.sberdevices.ru/pr/pr-2803/
asdk storybook: https://plasma.sberdevices.ru/pr/pr-2803/asdk-storybook/
b2c storybook: https://plasma.sberdevices.ru/pr/pr-2803/b2c-storybook/
giga storybook: https://plasma.sberdevices.ru/pr/pr-2803/giga-storybook/
homeds storybook: https://plasma.sberdevices.ru/pr/pr-2803/homeds-storybook/
new-hope storybook: https://plasma.sberdevices.ru/pr/pr-2803/new-hope-storybook/
ui storybook: https://plasma.sberdevices.ru/pr/pr-2803/ui-storybook/
web storybook: https://plasma.sberdevices.ru/pr/pr-2803/web-storybook/
sdds-bizcom storybook: https://plasma.sberdevices.ru/pr/pr-2803/sdds-bizcom-storybook/
sdds-cs storybook: https://plasma.sberdevices.ru/pr/pr-2803/sdds-cs-storybook/
sdds-dfa storybook: https://plasma.sberdevices.ru/pr/pr-2803/sdds-dfa-storybook/
sdds-finai storybook: https://plasma.sberdevices.ru/pr/pr-2803/sdds-finai-storybook/
sdds-insol storybook: https://plasma.sberdevices.ru/pr/pr-2803/sdds-insol-storybook/
sdds-netology storybook: https://plasma.sberdevices.ru/pr/pr-2803/sdds-netology-storybook/
sdds-os storybook: https://plasma.sberdevices.ru/pr/pr-2803/sdds-os-storybook/
sdds-platform-ai storybook: https://plasma.sberdevices.ru/pr/pr-2803/sdds-platform-ai-storybook/
sdds-sbcom storybook: https://plasma.sberdevices.ru/pr/pr-2803/sdds-sbcom-storybook/
sdds-scan storybook: https://plasma.sberdevices.ru/pr/pr-2803/sdds-scan-storybook/
sdds-serv storybook: https://plasma.sberdevices.ru/pr/pr-2803/sdds-serv-storybook/

@Yakutoc Yakutoc requested a review from shuga2704 May 26, 2026 07:41
@Yakutoc Yakutoc added this pull request to the merge queue May 26, 2026
Merged via the queue into dev with commit 487db75 May 26, 2026
88 of 91 checks passed
@Yakutoc Yakutoc deleted the fix-plasma-tokens-exports branch May 26, 2026 07:56
@github-actions
Copy link
Copy Markdown
Contributor

This PR is included in version:

  • @salutejs/plasma-asdk@0.377.0
  • @salutejs/plasma-b2c@1.619.0
  • @salutejs/plasma-core@1.227.0
  • @salutejs/plasma-giga@0.346.0
  • @salutejs/plasma-homeds@0.346.0
  • @salutejs/plasma-hope@1.373.0
  • @salutejs/plasma-icons@1.238.0
  • @salutejs/plasma-new-hope@0.363.0
  • @salutejs/plasma-tokens-b2b@1.55.0
  • @salutejs/plasma-tokens-b2c@0.66.0
  • @salutejs/plasma-tokens-web@1.70.0
  • @salutejs/plasma-tokens@1.139.0
  • @salutejs/plasma-typo@0.43.0
  • @salutejs/plasma-ui@1.349.0
  • @salutejs/plasma-web@1.621.0
  • @salutejs/sdds-bizcom@0.351.0
  • @salutejs/sdds-cs@0.355.0
  • @salutejs/sdds-dfa@0.349.0
  • @salutejs/sdds-finai@0.342.0
  • @salutejs/sdds-insol@0.346.0
  • @salutejs/sdds-netology@0.350.0
  • @salutejs/sdds-os@0.21.0
  • @salutejs/sdds-platform-ai@0.350.0
  • @salutejs/sdds-sbcom@0.351.0
  • @salutejs/sdds-scan@0.349.0
  • @salutejs/sdds-serv@0.350.0
  • @salutejs/core-themes@0.30.0
  • @salutejs/plasma-themes@0.51.0
  • @salutejs/sdds-themes@0.66.0
  • @salutejs/sdds-api-tests@0.8.0
  • @salutejs/plasma-cy-utils@0.157.0
  • @salutejs/plasma-sb-utils@0.227.0
  • @salutejs/plasma-tokens-utils@0.51.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants