برنامه نویسی

ایجاد یک اپلیکیشن Modern React: Vite + TypeScript + ESLint + Tailwind + shadcn/ui و Zustand

در این راهنما، روند راه اندازی یک برنامه React با جدیدترین ویژگی ها و کتابخانه های محبوب را مرور خواهیم کرد. ما از React 19، React Router، Tailwind CSS، shadcn/ui، ESLint با Prettier و Zustand برای مدیریت حالت استفاده خواهیم کرد. در پایان این آموزش، یک پروژه کاملاً پیکربندی شده آماده برای توسعه خواهید داشت.

راه اندازی پروژه

بیایید با ایجاد یک پروژه React جدید با استفاده از Vite شروع کنیم، که تجربه توسعه سریع‌تر و کمتری را ارائه می‌کند.

npm create vite@latest my-react-app -- --template react-ts
cd my-react-app
وارد حالت تمام صفحه شوید

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

این دستور یک پروژه React جدید با پشتیبانی TypeScript ایجاد می کند. حالا بیایید وابستگی های لازم را نصب کنیم:

npm install react@19 react-dom@19 react-router-dom@6 zustand@4 @types/react@19 @types/react-dom@19
npm install -D tailwindcss postcss autoprefixer eslint prettier eslint-config-prettier eslint-plugin-react eslint-plugin-react-hooks @typescript-eslint/eslint-plugin @typescript-eslint/parser
وارد حالت تمام صفحه شوید

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

پیکربندی Tailwind CSS

برای راه اندازی Tailwind CSS، دستور زیر را اجرا کنید:

npx tailwindcss init -p
وارد حالت تمام صفحه شوید

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

این باعث ایجاد یک tailwind.config.js فایل آن را با محتوای زیر به روز کنید:

module.exports = {
  content: [
    "./index.html",
    "./src/**/*.{js,ts,jsx,tsx}",
  ],
  theme: {
    extend: {},
  },
  plugins: [],
}
وارد حالت تمام صفحه شوید

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

اکنون دستورات Tailwind را به خود اضافه کنید src/index.css فایل:

@tailwind base;
@tailwind components;
@tailwind utilities;
وارد حالت تمام صفحه شوید

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

راه اندازی ESLint و Prettier

ایجاد کنید .eslintrc.js و .prettierrc فایل های موجود در ریشه پروژه شما:

touch .eslintrc.js .prettierrc
وارد حالت تمام صفحه شوید

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

مطالب زیر را به آن اضافه کنید .eslintrc.js:

module.exports = {
  env: {
    browser: true,
    es2021: true,
  },
  extends: [
    'eslint:recommended',
    'plugin:react/recommended',
    'plugin:@typescript-eslint/recommended',
    'prettier',
  ],
  parser: '@typescript-eslint/parser',
  parserOptions: {
    ecmaFeatures: {
      jsx: true,
    },
    ecmaVersion: 12,
    sourceType: 'module',
  },
  plugins: ['react', '@typescript-eslint'],
  rules: {
    'react/react-in-jsx-scope': 'off',
  },
  settings: {
    react: {
      version: 'detect',
    },
  },
};
وارد حالت تمام صفحه شوید

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

و به .prettierrc:

{
  "semi": true,
  "tabWidth": 2,
  "printWidth": 100,
  "singleQuote": true,
  "trailingComma": "all",
  "jsxSingleQuote": true,
  "bracketSpacing": true
}
وارد حالت تمام صفحه شوید

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

نصب و پیکربندی shadcn/ui

برای استفاده از shadcn/ui، باید آن را در پروژه خود راه اندازی کنیم:

npx shadcn-ui@latest init
وارد حالت تمام صفحه شوید

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

دستورات را برای پیکربندی shadcn/ui برای پروژه خود دنبال کنید. این فایل ها و تنظیمات لازم را تنظیم می کند.

راه اندازی Zustand

یک فایل جدید ایجاد کنید src/store.ts برای فروشگاه شرایط ما:

import create from 'zustand';

interface AppState {
  count: number;
  increment: () => void;
  decrement: () => void;
}

export const useAppStore = create<AppState>((set) => ({
  count: 0,
  increment: () => set((state) => ({ count: state.count + 1 })),
  decrement: () => set((state) => ({ count: state.count - 1 })),
}));
وارد حالت تمام صفحه شوید

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

به روز رسانی اسکریپت های package.json

اسکریپت های زیر را به خود اضافه کنید package.json:

"scripts": {
  "dev": "vite",
  "build": "tsc && vite build",
  "lint": "eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
  "preview": "vite preview",
  "format": "prettier --write \"src/**/*.{js,jsx,ts,tsx}\"",
  "lint:fix": "eslint src --ext ts,tsx --fix"
}
وارد حالت تمام صفحه شوید

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

ایجاد یک نمونه برنامه

بیایید یک برنامه ساده برای نشان دادن استفاده از تنظیمات خود ایجاد کنیم. به روز رسانی src/App.tsx:

import { BrowserRouter as Router, Routes, Route, Link } from 'react-router-dom';
import { Button } from './components/ui/button';
import { useAppStore } from './store';

function Home() {
  const { count, increment, decrement } = useAppStore();

  return (
    <div className='p-4'>
      <h1 className='text-2xl font-bold mb-4'>Homeh1>
      <p className='mb-4'>Count: {count}p>
      <Button onClick={increment} className='mr-2'>IncrementButton>
      <Button onClick={decrement}>DecrementButton>
    div>
  );
}

function About() {
  return <div className='p-4'>
    <h1 className='text-2xl font-bold'>Abouth1>
  div>;
}

function App() {
  return (
    <Router>
      <div className='p-4'>
        <nav className='mb-4'>
          <Link to="https://dev.to/" className='mr-4'>HomeLink>
          <Link to="https://dev.to/about">AboutLink>
        nav>
        <Routes>
          <Route path="https://dev.to/" element={<Home />} />
          <Route path="https://dev.to/about" element={<About />} />
        Routes>
      div>
    Router>
  );
}

export default App;
وارد حالت تمام صفحه شوید

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

اجرای برنامه

اکنون می توانید برنامه خود را با استفاده از دستور زیر اجرا کنید:

npm run dev
وارد حالت تمام صفحه شوید

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

با این کار سرور توسعه راه اندازی می شود و می توانید برنامه خود را در آن مشاهده کنید http://localhost:5173.

نتیجه گیری

اکنون یک برنامه React مدرن با React 19، React Router، Tailwind CSS، shadcn/ui، ESLint با Prettier و Zustand راه اندازی شده است. این راه‌اندازی یک پایه محکم برای ساخت برنامه‌های React مقیاس‌پذیر و قابل نگهداری فراهم می‌کند.

کد نویسی مبارک!

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

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

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

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