Конфигурация Tailwind для пакета, используемого в нескольких приложениях

В рамках системы дизайна моей организации у меня есть пакет под названием «core», из которого я экспортирую весь CSS. В приложениях он является зависимостью и устанавливается как node_module в их приложении.

Недавно я добавил Tailwindcss в свой «основной» пакет, но классы Tailwind не будут применяться к приложениям, использующим мой пакет, поскольку они не могут указать путь content.

module.exports = {
  content: [], -> This resides in my "core" package and apps cannot modify it
  theme: {
    extend: {}
  },
  plugins: []
};

Один из вариантов — использовать свойство safelist в файле tailwind.config.js и добавить весь CSS, который мне нужен, но я не хочу этого делать. Я хочу, чтобы конечное приложение могло использовать любой класс попутного ветра, а также воспользоваться функцией JIT-компилятора/очистки попутного ветра, чтобы их пакет не включал весь CSS попутного ветра.

Как приложения, использующие мой пакет, могут динамически указывать путь content?

PS. Я использую rollup, если это имеет какое-то значение.

Любая помощь приветствуется, спасибо!

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
0
0
201
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решением, которое я реализовал для аналогичной проблемы, было предоставление конфигурации попутного ветра в моей библиотеке вместе с несколькими функциями (например, mergeConfig(customConfig)).

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

Другой подход заключается в том, чтобы предоставить ваши окончательные скомпилированные стили вместо тех, которые должны быть скомпилированы попутным ветром.

Я понимаю, что мы можем экспортировать функцию из tailwind.config.js в основной пакет вместо объекта. Но как это будет экспортировано в другие пакеты?

Jake Cano 16.04.2024 19:26

Прежде чем стать файлом конфигурации для попутного ветра, это всего лишь файл Javascript, который запускается NodeJS, когда попутный ветер должен создать файлы CSS. Это означает, что вы можете просто экспортировать его, как и любой другой файл JS.

MGX 17.04.2024 15:37

Ах, теперь я понимаю ваш подход. В вашем потребительском приложении установлен попутный ветер, и вы просто объединяете две конфигурации в потребительском приложении tailwind.config.js, верно? Мое требование состоит в том, чтобы потребительскому приложению не приходилось устанавливать попутный ветер, поскольку они использовали мой «основной» пакет, который предоставляет им попутный ветер. Надеюсь, вы поняли мою точку зрения.

Jake Cano 17.04.2024 19:34

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

MGX 18.04.2024 09:50

Ваше последнее замечание кажется интересным. Не могли бы вы рассказать немного больше?

Jake Cano 18.04.2024 12:11

Не совсем потому, что я этого не делал, но приведу пример: когда кто-то использует Angular, можно ввести npx ng generate component my/component : это двоичный файл, который вы можете найти в своем node_modules/.bin каталоге : вашей целью будет воспроизвести это поведение, чтобы пользователь мог ввести npx yourlib compile-css (или что-то подобное), и CSS Tailwind скомпилировался бы в обычный CSS. Но опять же, это просто более (сложные) шаги по сравнению с предыдущим подходом, который заключается в прямой отправке скомпилированного CSS!

MGX 18.04.2024 13:02

Спасибо, приятель! Я собираюсь использовать ваше оригинальное решение для объединения конфигурации в потребительском приложении. Спасибо, что уделили мне время :)

Jake Cano 19.04.2024 08:19

Другие вопросы по теме