





















现代前端开发离不开强大的工具链支持。本文将详细介绍如何配置一套完整的前端开发环境,帮助你提升开发效率。
# 使用 Vite 创建项目
pnpm create vite my-app --template react-ts
# 或使用 Next.js
pnpx create-next-app@latest my-app --typescript --tailwind --eslint
# 进入项目目录
cd my-app
pnpm install
{
"compilerOptions": {
"target": "ES2020",
"lib": ["DOM", "DOM.Iterable", "ES6"],
"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/*"],
"@/components/*": ["src/components/*"],
"@/utils/*": ["src/utils/*"]
}
},
"include": ["src", "**/*.ts", "**/*.tsx"],
"exclude": ["node_modules"]
}
# 安装 ESLint 及相关插件
pnpm add -D eslint @typescript-eslint/eslint-plugin @typescript-eslint/parser
pnpm add -D eslint-plugin-react eslint-plugin-react-hooks
pnpm add -D eslint-plugin-import eslint-plugin-jsx-a11y
module.exports = {
env: {
browser: true,
es2021: true,
node: true,
},
extends: [
'eslint:recommended',
'@typescript-eslint/recommended',
'plugin:react/recommended',
'plugin:react-hooks/recommended',
'plugin:import/recommended',
'plugin:jsx-a11y/recommended',
],
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaFeatures: {
jsx: true,
},
ecmaVersion: 12,
sourceType: 'module',
},
plugins: [
'react',
'@typescript-eslint',
'import',
'jsx-a11y',
],
rules: {
'react/react-in-jsx-scope': 'off',
'import/no-unresolved': 'off',
'@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
'react/prop-types': 'off',
},
settings: {
react: {
version: 'detect',
},
},
};
# 安装 Prettier
pnpm add -D prettier eslint-config-prettier eslint-plugin-prettier
{
"semi": true,
"trailingComma": "es5",
"singleQuote": true,
"printWidth": 80,
"tabWidth": 2,
"useTabs": false,
"bracketSpacing": true,
"arrowParens": "avoid",
"endOfLine": "lf"
}
node_modules
dist
build
.next
.nuxt
.vscode
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true,
"source.organizeImports": true
},
"typescript.preferences.importModuleSpecifier": "relative",
"emmet.includeLanguages": {
"typescript": "html",
"typescriptreact": "html"
}
}
{
"recommendations": [
"esbenp.prettier-vscode",
"dbaeumer.vscode-eslint",
"ms-vscode.vscode-typescript-next",
"bradlc.vscode-tailwindcss",
"ms-vscode.vscode-json",
"christian-kohler.path-intellisense"
]
}
node_modules/
dist/
build/
.next/
.nuxt/
.env.local
.env.development.local
.env.test.local
.env.production.local
.DS_Store
*.log
coverage/
# 安装 Husky 和 lint-staged
pnpm add -D husky lint-staged
# 初始化 Husky
npx husky install
npx husky add .husky/pre-commit "npx lint-staged"
{
"scripts": {
"prepare": "husky install"
},
"lint-staged": {
"*.{js,jsx,ts,tsx}": [
"eslint --fix",
"prettier --write",
"git add"
],
"*.{css,scss,less}": [
"prettier --write",
"git add"
],
"*.{json,md}": [
"prettier --write",
"git add"
]
}
}
# 安装 bundle 分析工具
pnpm add -D @next/bundle-analyzer # Next.js
pnpm add -D rollup-plugin-visualizer # Vite
# 安装图片优化工具
pnpm add next-optimized-images # Next.js
pnpm add vite-plugin-imagemin # Vite
// React 懒加载
import { lazy, Suspense } from 'react';
const LazyComponent = lazy(() => import('./components/LazyComponent'));
function App() {
return (
<Suspense fallback={<div>加载中...</div>}>
<LazyComponent />
</Suspense>
);
}
浏览器扩展,帮助调试 React 组件
调试状态管理
// 网络请求拦截
if (process.env.NODE_ENV === 'development') {
const { worker } = require('./mocks/browser');
worker.start();
}
# 安装测试工具
pnpm add -D jest @testing-library/react @testing-library/jest-dom
pnpm add -D jest-environment-jsdom
module.exports = {
testEnvironment: 'jsdom',
setupFilesAfterEnv: ['<rootDir>/src/setupTests.ts'],
moduleNameMapping: {
'^@/(.*)$': '<rootDir>/src/$1',
},
collectCoverageFrom: [
'src/**/*.{ts,tsx}',
'!src/**/*.d.ts',
],
};
# Dockerfile
FROM node:18-alpine AS deps
WORKDIR /app
COPY package.json pnpm-lock.yaml ./
RUN corepack enable pnpm && pnpm install --frozen-lockfile
FROM node:18-alpine AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN corepack enable pnpm && pnpm build
FROM node:18-alpine AS runner
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/package.json ./package.json
EXPOSE 3000
CMD ["npm", "start"]
name: CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v3
with:
node-version: 18
cache: 'pnpm'
- run: pnpm install --frozen-lockfile
- run: pnpm lint
- run: pnpm test
- run: pnpm build
通过这套完整的工具链配置,你可以获得:
现代前端开发工具在不断演进,建议定期关注新工具和最佳实践,持续优化开发环境。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。