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

build(css): fix source-map generated by webpack #7034

Merged

Conversation

inomdzhon
Copy link
Contributor

@inomdzhon inomdzhon commented Jun 19, 2024

Проблема

PostCSS >= 8.4.38 при импорте файлов со стилями из @vkontakte/vkui

@import 'node_modules/@vkontakte/vkui/dist/components.css';
/* или */
@import 'node_modules/@vkontakte/vkui/dist/vkui.css';

пишет в консоль предупреждения

original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.

Ругается на некорректный source-map. Вот пути до них:

node_modules/@vkontakte/vkui/dist/components.css.map
node_modules/@vkontakte/vkui/dist/vkui.css.map

Решение

Мы собираем выше упомянутые стили через Webpack. Но есть несколько нюансов:

  • в mode используется значение none;
  • CSS минифицируется через cssnano в конфигурационном файле PostCSS.

Это конфликтует с оптимизациями Webpack, а также аффектит souce-map файлы.

Поправил конфигурационный файл следующим образом:

  • в mode теперь выставляем production;
  • настраиваем CssMinimizerPlugin с теми же параметрами, что используем для cssnano;
  • отключаем cssnano в конфигурационном файле PostCSS.

✅ теперь source-map файлы генерируются корректно.

Побочные эффекты

Произошла небольшая оптимизация CSS бандлов:

components

components.css (до и после)

vkui

vkui.css (до и после)

**PostCSS** >= 8.4.38 при импорте файлов со стилями из `@vkontakte/vkui`

```css
@import 'node_modules/@vkontakte/vkui/dist/components.css';
/* или */
@import 'node_modules/@vkontakte/vkui/dist/vkui.css';
```

пишет в консоль предупреждения

```
original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.
```

Ругается на некорректный **source-map**. Вот пути до них:

```
node_modules/@vkontakte/vkui/dist/components.css.map
node_modules/@vkontakte/vkui/dist/vkui.css.map
```

h2. Решение

Мы собираем выше упомянутые стили через **Webpack**. Но есть несколько нюансов:

- в **mode** используется значение `none`;
- CSS минифицируется через **cssnano** в конфигурационном файле **PostCSS**.

Это конфликтует с оптимизациями **Webpack**, а также аффектит **souce-map** файлы.

Поправил конфигурационный файл следующим образом:

- в **mode** теперь выставляем `production`;
- настраиваем **CssMinimizerPlugin** с теми же параметрами, что используем для **cssnano**;
- отключаем **cssnano** в конфигурационном файле PostCSS.

✅ теперь **source-map** файл генерируется корректно.
@inomdzhon inomdzhon added this to the v6.2.0 milestone Jun 19, 2024
@inomdzhon inomdzhon self-assigned this Jun 19, 2024
@inomdzhon inomdzhon requested a review from a team as a code owner June 19, 2024 16:29
Copy link
Contributor

size-limit report 📦

Path Size
JS 364.71 KB (0%)
JS (gzip) 111.64 KB (0%)
JS (brotli) 91.83 KB (0%)
JS import Div (tree shaking) 1.42 KB (0%)
CSS 282.7 KB (-0.06% 🔽)
CSS (gzip) 36.6 KB (-0.57% 🔽)
CSS (brotli) 29.63 KB (-0.59% 🔽)

Copy link

This pull request is automatically built and testable in CodeSandbox.

To see build info of the built libraries, click here or the icon next to each commit SHA.

Copy link
Contributor

e2e tests

Playwright Report

Copy link
Contributor

👀 Docs deployed

Commit b4e54dd

Copy link

codecov bot commented Jun 19, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 83.46%. Comparing base (2566673) to head (b4e54dd).

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #7034   +/-   ##
=======================================
  Coverage   83.46%   83.46%           
=======================================
  Files         353      353           
  Lines       10570    10570           
  Branches     3510     3510           
=======================================
  Hits         8822     8822           
  Misses       1748     1748           
Flag Coverage Δ
unittests 83.46% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@inomdzhon inomdzhon merged commit f3d038f into master Jun 20, 2024
26 checks passed
@inomdzhon inomdzhon deleted the imirdzhamolov/tech/fix-webpack-css-bundle-source-map branch June 20, 2024 08:41
@vkcom-publisher
Copy link
Contributor

v6.2.0 🎉

inomdzhon added a commit that referenced this pull request Aug 9, 2024
Перенос изменений беты [v5.10.1-beta.1](https://www.npmjs.com/package/@vkontakte/vkui/v/5.10.1-beta.1) (см. [comparing changes](5.10-stable...imirdzhamolov/tech/v5.10.1-beta.1/fix-css-source-map)).

> [!NOTE]
>
> `v5.10.1-beta.1` публиковал из ветки `imirdzhamolov/tech/v5.10.1-beta.1/fix-css-source-map`

---

- related to #7034
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

4 participants