Без довго вступу, почну одразу із конкретного прикладу. Я використовую npm пакет penthouse для створення css-critical. Але у нього є дві проблеми:

  1. Він оновлювався більше року тому назад

  2. Він не дуже добре працює з деякими TailwindCSS класами. Наприклад, lg:-top-12 або xl:-ms-8

Трохи детальніше про пункт №2. Проблема у тому, що це ми бачимо клас, як lg:-top-12 . Але коли ми дивимось вихідний css файл, то є наступне .xl\:-top-11 або .lg\:-left-1\/2 . Саме слеш та двокрапка створють проблему при формуванні css critical.

У пошуку рішення, я оглянув Pull requests у репозиторії пакету та знайшов цікавий комміт. Автор пропонує змінити регулярний вираз, який би не видаляв селектори, які містять : та \ .

Мені було цікаво перевірити це рішення у себе. І якщо воно працює, то залишити його у себе. Власне, так і виникла тема цього тексту.

Крок 1. Встановлення пакету penthouse у наш проєкт

pnpm add -D penthouse (на місці penthouse може бути будь-який пакет)

Крок 2. Patch пакету за допомогою PNPM

pnpm patch penthouse

PNPM створить тимчасову директорію, яку треба відкрити у редакторі

Patch: You can now edit the package at:

  C:\Users\<USER>\AppData\Local\Temp\6115092f3e6eadb7a3ed149ebbc80490

To commit your changes, run:

  pnpm patch-commit 'C:\Users\<USER>\AppData\Local\Temp\6115092f3e6eadb7a3ed149ebbc80490'

Копіюємо шлях та відкриваємо її і редакторі. У моєму випадку, це VS Code (відкриваю термінал та пишу)

code C:\Users\<USER>\AppData\Local\Temp\6115092f3e6eadb7a3ed149ebbc80490
Редактор VS Code з темою Catppuccin Frappe та іконками Catppuccin Icons Frappe

Мене цікавить файл selectors-profile.js , рядок 83.

Зберігаю зміни, закриваю редактор та у редакторі, де відкрито основний проєкт, виконую наступну команду

pnpm patch-commit 'C:\Users\<USER>\AppData\Local\Temp\6115092f3e6eadb7a3ed149ebbc80490'

Після цього, наш проєкт буде містити сам патч + налаштування для його застосування, якщо інший розробник розгорне проєкт у себе

Висновки

Ось так просто ви можете покращити пакет, який давно не розвивається, але використовується у вашому проєкті.

Дякую за увагу!

Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Олександр Терещук
Олександр Терещук@oletere

WordPress Developer

759Прочитань
0Автори
2Читачі
На Друкарні з 2 травня

Більше від автора

  • Як оновити застосунки на Windows у 2024? Пакетний менеджер Winget. Зручно, просто та необхідно

    Я завжди шукаю нові інструменти, щоб зробити свою роботу за ноутбуком комфортнішою та ефективнішою. Програмне забезпечення, про яке ми будемо говорити, я наполегливо раджу кожному, у кого Windows 10/11 є основною системою. Мова про пакетний менеджер Winget.

    Теми цього довгочиту:

    Winget
  • NVM або чому у тебе має бути декілька версій NodeJS

    Одна і певно найвагоміша причина, чому вам потрібно мати декілька версій NodeJS — підтримка декількох проєктів. Розберемось, як встановити NVM та додати декілька версій NodeJS на твою робочу машину

    Теми цього довгочиту:

    Nodejs
  • Font Subsetting. Оптимізація шрифту для WEB

    Стискання картинок, ліниве завантаження ресурсів, стискання стилі та скриптів — хороший тон веброзробника. А чи оптимізуєте ви шрифти? Гадаєте конвертації у WOFF2 достатньо? У цьому матеріалів поговоримо про Font Subsetting

    Теми цього довгочиту:

    Шрифт

Вам також сподобається

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Вам також сподобається