初始化项目
项目创建与配置
一、初始化项目
-
创建项目
C:\code>npm init vite@latest √ Project name: ... vite-react √ Select a framework: » React √ Select a variant: » TypeScript Scaffolding project in C:\code\vite-react... Done. Now run: cd vite-react npm install npm run dev -
安装依赖
npm i npm i --save antd npm i --save @ant-design/icons npm i @reduxjs/toolkit react-redux npm i react-router-dom npm run dev -
查看项目配置
{ "name": "vite-react", "private": true, "version": "0.0.0", "type": "module", "scripts": { "dev": "vite --host --port 3002 --open", // 这里要修改 "build": "tsc && vite build", "preview": "vite preview" }, "dependencies": { "@ant-design/icons": "^4.8.0", "@reduxjs/toolkit": "^1.9.1", "antd": "^5.0.4", "react": "^18.2.0", "react-dom": "^18.2.0", "react-redux": "^8.0.5", "react-router-dom": "^6.4.4" }, "devDependencies": { "@types/react": "^18.0.24", "@types/react-dom": "^18.0.8", "@vitejs/plugin-react": "^2.2.0", "typescript": "^4.6.4", "vite": "^3.2.3" } }
二、调整项目文件
-
项目目录
$ ls src/ App.tsx main.tsx vite-env.d.ts -
App.tsx 调整内容
function App() { return ( <div className="App"> <p>顶级组件</p> </div> ); } export default App; -
入口文件 main.tsx
import React from "react"; import ReactDOM from "react-dom/client"; import App from "./App"; ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render( <React.StrictMode> <App /> </React.StrictMode> );
三、样式初始化
-
安装 reset-css
npm i reset-css -
main.tsx 引入样式
// etc... // 正确的引入顺序, 最前面 => UI框架的样式 => 全局样式 => 组件的样式 import "reset-css"; import App from "./App"; // etc... -
安装 sass
npm i -save-dev sass npm i -D @types/node -
vite.config.ts 配置路径别名
import { defineConfig } from "vite"; import react from "@vitejs/plugin-react"; import path from "path"; // https://vitejs.dev/config/ export default defineConfig({ plugins: [react()], resolve: { alias: { "@": path.resolve(__dirname, "./src"), }, }, }); -
tsconfig.json 配置路径提示
{ "compilerOptions": { "target": "ESNext", "useDefineForClassFields": true, "lib": ["DOM", "DOM.Iterable", "ESNext"], "allowJs": false, "skipLibCheck": true, "esModuleInterop": false, "allowSyntheticDefaultImports": true, "strict": true, "forceConsistentCasingInFileNames": true, "module": "ESNext", "moduleResolution": "Node", "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, "jsx": "react-jsx", // 这里 "baseUrl": "./", "paths": { "@/*": ["src/*"] } // 这里 }, "include": ["src"], "references": [{ "path": "./tsconfig.node.json" }] } -
创建全局样式文件 src\assets\styles\global.scss
$color: red; body { // 禁止选中文字 user-select: none; background-color: aquamarine; } img { // 禁止图片拖动 -webkit-user-drag: none; } // 首页样式 可以写在全局 .logo { height: 32px; margin: 16px; background: rgba(255, 255, 255, 0.3); } .site-layout .site-layout-background { background: #ccc; } -
main.tsx 中引入, 样式起作用
// etc... // 正确的引入顺序, 最前面 => UI框架的样式 => 全局样式 => 组件的样式 import "reset-css"; import "@/assets/styles/global.scss"; import App from "./App"; // etc...