创建现代 React 应用程序:Vite + TypeScript + ESLint + Tailwind + shadcn/ui 和 Zustand

在本指南中,我们将介绍如何使用最新功能和流行库设置 React 应用程序。我们将使用 React 19、React Router、Tailwind CSS、shadcn/ui、带有 Prettier 的 ESLint 和 Zustand 进行状态管理。在本教程结束时,您将拥有一个完全配置好的项目,可供开发。

设置项目

让我们首先使用 Vite 创建一个新的 React 项目,它提供了更快、更精简的开发体验。

npm create vite@latest my-react-app -- --template react-ts
cd my-react-app

此命令创建一个支持 TypeScript 的新 React 项目。现在,让我们安装必要的依赖项:

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

为我们的 Zusand 商店创建一个新文件 `src/store.ts`:

import create from 'zustand';

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

export const useAppStore = create((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 (
    

Home

Count: {count}

); } function About() { return

About

; } function App() { return (
} /> } />
); } export default App;

运行应用程序

现在您可以使用以下命令运行您的应用程序:

npm run dev

这将启动开发服务器,您可以在“http://localhost:5173”查看您的应用程序。

结论

现在,您已使用 React 19、React Router、Tailwind CSS、shadcn/ui、带有 Prettier 的 ESLint 和 Zustand 设置了一个现代 React 应用程序。此设置为构建可扩展且可维护的 React 应用程序奠定了坚实的基础。

祝你编码愉快!