برنامه نویسی

به اشتراک گذاری پیکربندی Tailwind خود بین بسته های Monorepo

در این پست، یاد خواهید گرفت که چگونه پیکربندی Tailwind خود را بین چندین بسته داخل یک monorepo به اشتراک بگذارید. توجه به این نکته مهم است که مثال ارائه شده در اینجا از فضاهای کاری NPM استفاده می کند، و اگرچه ممکن است مستقیماً برای راه حل های دیگری مانند Yarn، PNPM Workspace، Lerna یا Nx قابل اجرا نباشد، اصول مورد بحث همچنان می تواند مفید باشد.

نمونه راه اندازی Tailwind Monorepo

بیایید با بررسی نمونه راه اندازی پروژه ای که برای این توضیح استفاده می کنیم، شروع کنیم:

- packages
  - ui
  - web
- package.json
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

همانطور که می بینید ما دو بسته داریم. را ui بسته بسته مؤلفه UI را نشان می دهد که از آن همه مؤلفه های React خود را صادر می کنیم. همچنین به عنوان مکانی برای پیکربندی Tailwind ما عمل می کند که می خواهیم آن را در خود وارد کنیم web بسته بندی به خاطر داشته باشید که این رویکرد می تواند به سایر بسته های فضای کاری در monorepo شما نیز گسترش یابد.

راه اندازی Tailwind

قبل از اینکه به جزئیات اشتراک‌گذاری پیکربندی Tailwind بپردازیم، بیایید مطمئن شویم که تنظیمات لازم را در محل خود داریم. در این مثال، ما از Vite برای تولید برنامه React خود استفاده خواهیم کرد. برای شروع می توانید تنظیمات Tailwind را همانطور که در مستندات آنها توضیح داده شده است دنبال کنید. هنگامی که تمام دستورات لازم را اجرا کردید، web دایرکتوری باید حاوی فایل های زیر باشد:

- postcss.config.js
- tailwind.config.js
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

انتقال اطلاعات تم

با تکمیل راه‌اندازی اولیه، اکنون می‌توانیم پیکربندی قالب را به خارج از آن منتقل کنیم web بسته بندی

برای رسیدن به این هدف، با کپی کردن بلوک تم از فایل پیکربندی Tailwind خود که در آن قرار دارد شروع کنید packages/web/tailwind.config.js. ایجاد یک فایل جدید در packages/ui/tailwind.config.jsو بلوک تم کپی شده را در آن جایگذاری کنید.

مهم است که فایل پیکربندی را نام ببرید tailwind.config.js به طوری که ابزارهای توسعه دهنده می توانند موضوع شما را از بسته UI نیز تجزیه کنند.

اکنون فایل های شما باید به شکل زیر باشند:

packages/web/tailwind.config.js

/** @type {import('tailwindcss').Config} */

export default {
  content: [
    './src/**/*.{js,jsx,ts,tsx}'
  ],
  plugins: [],
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

packages/ui/tailwind.config.js

/** @type {import('tailwindcss').Config} */

export default {
  theme: {
    // ... your theme configuration
  }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

همانطور که می بینید، در داخل بسته UI ما، ما فقط اطلاعات موضوع را درج می کنیم. این رویکرد سودمند است زیرا ما نمی‌خواهیم پلاگین‌ها را در سطح جهانی پیکربندی کنیم، زیرا پروژه UI فاقد فرآیند ساخت است و افزونه‌ها را پردازش نمی‌کند.

در حالی که ممکن است وسوسه انگیز باشد که این پیکربندی را مستقیماً در خود قرار دهید web این پروژه، توصیه می شود افزونه ها را در پروژه های جداگانه نگه دارید.

اکنون، اجازه دهید موضوع خود را از ui در ما web پیکربندی خط زیر را به آن اضافه کنید packages/web/tailwind.config.js:

import config from '../ui/tailwind.config'
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

علاوه بر این، باید به Tailwind اجازه دهید تا اجزای رابط کاربری و فایل پیکربندی Tailwind را تماشا کند. این تضمین می کند که فرآیند ساخت شما می تواند پیکربندی تم خارجی شما را به روز کند.

برای انجام این کار، خطوط زیر را به آرایه محتوا اضافه کنید packages/web/tailwind.config.js:

{
  "content": [
    // paste it below your normal content configuration
    '../ui/**/*.{js,jsx,ts,tsx}',
    '../ui/tailwind.config.js',
  ],
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

وویلا! اکنون پروژه شما باید پیکربندی Tailwind خارجی را به درستی انتخاب کند و به شما امکان می‌دهد تم خود را در چندین پروژه به اشتراک بگذارید.

نتیجه

برای مطالعه این پست از شما سپاسگزارم. امیدوارم برای شما مفید بوده باشد! اگر از این مطالب لذت بردید و دوست دارید بیشتر بخوانید، در ادامه مطلب مرا دنبال کنید توییتر و Github.

اگر برای پروژه بعدی خود به یک کتابخانه ویرایشگر قوی نیاز دارید، حتماً Tiptap را بررسی کنید. این یک پروژه منبع باز است و ما همیشه از بازخوردها و مشارکت ها قدردانی می کنیم!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا