核心前提说明
- 前端配置文件分 **「静态配置(json/ini)」和 「动态配置(js/ts)」**,动态配置支持逻辑判断 / 引入依赖,灵活性更高,业务中优先用
*.js/ts(如vite.config.js而非vite.config.json); - 命名规范 :以
.开头的是隐藏配置文件 (系统 / 工具识别),无.的是显式配置(如package.json); - 优先级 :同类型配置文件,后缀 js/ts > json > yaml/yml (如
.eslintrc.js优先级高于.eslintrc.json); - 按需存在 :配置文件随项目技术栈变化(如 TS 项目才有
tsconfig.json,Vite 项目才有vite.config.js),下文会明确每个文件的适用场景。
一、通用基础配置文件
这类文件是任何前端项目都必须有的,不管是原生 JS、Vue/React 框架、库开发,缺一不可,是项目的 "基础骨架"。
1. package.json - 项目核心配置文件
核心作用 :项目的身份证 ,记录项目描述、依赖包、脚本命令、版本、作者等所有核心信息,是npm/yarn/pnpm包管理器的核心识别文件,无此文件则无法使用包管理器 。适用场景 :所有前端项目(哪怕只有一行 JS)。核心配置项(按重要性排序):
{
"name": "my-frontend", // 项目名,小写/横线分隔,不能有中文
"version": "1.0.0", // 版本号,遵循语义化版本(MAJOR.MINOR.PATCH:主版本.次版本.补丁)
"description": "前端工程化项目", // 项目描述
"main": "src/main.js", // 入口文件(库开发必配,应用开发可选)
"type": "module", // 模块规范:ESModule(import/export),默认CommonJS(require/module.exports)
"scripts": { // 自定义脚本命令,通过npm run <命令>执行,业务核心
"dev": "vite", // 开发环境启动
"build": "vite build", // 生产环境打包
"lint": "eslint . --ext .js,.ts,.vue", // ESLint语法检查
"format": "prettier --write .", // Prettier代码格式化
"preview": "vite preview" // 打包后本地预览
},
"dependencies": { // 生产环境依赖(项目运行必须,如Vue/React/axios)
"vue": "^3.4.0",
"axios": "^1.6.0"
},
"devDependencies": { // 开发环境依赖(仅开发/打包用,如Vite/ESLint/loader)
"vite": "^5.0.0",
"eslint": "^8.50.0",
"@vitejs/plugin-vue": "^5.0.0"
},
"engines": { // 限制运行的node/npm版本(团队协作统一环境)
"node": ">=18.0.0",
"npm": ">=9.0.0"
},
"browserslist": { // 浏览器兼容目标(babel/postcss自动适配)
"production": [">0.2%", "not dead", "not op_mini all"],
"development": ["last 1 chrome version", "last 1 firefox version"]
}
}
关键技巧:
- 依赖版本前缀:
^(兼容次版本,如 ^1.6.0 → 1.x.x)、~(兼容补丁,如~1.6.0 →1.6.x)、无前缀(固定版本); - 区分
dependencies和devDependencies:生产依赖用npm install <包名>,开发依赖用npm install <包名> -D; type: module:现代项目优先配置,启用 ESModule,避免require/export混用报错。
2. .gitignore - Git 忽略配置文件
核心作用 :指定 Git 版本控制中无需提交 的文件 / 文件夹,避免提交依赖包、编译产物、环境配置等无用文件,团队协作必配 。适用场景 :所有使用 Git 的项目(99% 的前端项目)。通用实用配置(直接复用,覆盖 99% 场景):
# 依赖包(包管理器生成,体积大,无需提交)
node_modules/
# 编译/打包产物(生产环境构建结果,动态生成)
dist/
build/
out/
# 环境变量文件(包含敏感信息,如接口地址、密钥)
.env
.env.*
!.env.example # 例外:保留示例文件,供团队参考
# 日志文件
*.log
# 编辑器/IDE配置(个人配置,无需团队统一)
.idea/
.vscode/
!.vscode/settings.json # 例外:保留团队统一的VSCode配置
*.swp
*.swo
# 操作系统隐藏文件
.DS_Store # Mac
Thumbs.db # Windows
# 缓存文件
.npm/
.pnpm-store/
.yarn/
# 库开发的类型声明
*.d.ts.build/
# 测试报告
coverage/
关键技巧 :!表示例外规则 (排除在忽略之外),适合保留示例文件(如.env.example)。
3. README.md - 项目说明文档
核心作用 :项目的使用手册 ,记录项目介绍、启动步骤、目录结构、环境要求、部署方式、团队规范等,团队协作 / 开源项目必配 。实用模板(直接复用):
# 项目名称
my-frontend - 前端工程化项目
## 项目介绍
基于Vue3+Vite+TS的前端项目,适配PC/移动端,包含XX功能。
## 环境要求
- Node >= 18.0.0
- npm/pnpm >= 9.0.0
## 快速启动
1. 克隆项目:git clone https://xxx.git
2. 安装依赖:pnpm install(推荐pnpm,也可用npm/yarn)
3. 开发环境:pnpm run dev
4. 生产打包:pnpm run build
5. 打包预览:pnpm run preview
## 目录结构
src/ - 源码目录
├── api/ - 接口请求
├── components/ - 公共组件
├── views/ - 页面视图
├── main.ts - 入口文件
dist/ - 打包产物(生产环境)
## 脚本命令
- pnpm run dev:启动开发服务
- pnpm run build:生产打包
- pnpm run lint:ESLint语法检查
- pnpm run format:代码格式化
## 环境变量
参考.env.example配置,新增.env.development/.env.production文件。
## 部署方式
将dist/目录上传至Nginx/Apache/静态资源服务器。
二、包管理配置文件
用于配置npm/yarn/pnpm的镜像源、安装规则、缓存 等,解决包下载慢、版本不一致、跨平台兼容等问题,不同包管理器对应不同配置文件,推荐使用 pnpm(速度快、体积小、无依赖幽灵)。
1. 锁文件 - 保证依赖版本一致
核心作用 :记录项目中实际安装的依赖包版本、下载地址、依赖树 ,确保团队所有成员 / 部署环境安装的依赖版本完全一致,团队协作必配 ,由包管理器自动生成,无需手动修改。
| 包管理器 | 锁文件名称 | 备注 |
|---|---|---|
| npm | package-lock.json |
npm5 + 自动生成 |
| yarn | yarn.lock |
所有 yarn 版本 |
| pnpm | pnpm-lock.yaml |
pnpm 专属,yaml 格式 |
| 关键规则 :锁文件必须提交到 Git,不要添加到.gitignore。 |
2. 镜像源配置文件
核心作用 :配置包管理器的下载镜像源(如淘宝源、华为源),解决国外官方源下载慢的问题,也可配置私有源(公司内部包仓库)。
(1).npmrc - npm/pnpm 配置文件
适用场景 :使用 npm/pnpm 的项目,全局 / 项目级 均可配置(项目级优先级更高)。项目级实用配置(项目根目录新建,直接复用):
# 配置淘宝镜像源(解决下载慢)
registry=https://registry.npmmirror.com/
# 私有源(公司内部包仓库,按需配置)
# @company:registry=https://npm.company.com/
# 安装时忽略脚本(避免部分包的postinstall脚本报错)
ignore-scripts=false
# 强制使用pnpm的锁文件
package-lock=false
shamefully-hoist=true
(2).yarnrc/.yarnrc.yml - Yarn 配置文件
适用场景 :使用 Yarn 的项目,Yarn2 + 推荐.yarnrc.yml(yaml 格式)。实用配置:
# Yarnrc.yml
registry: https://registry.npmmirror.com/
nodeLinker: node-modules
快速配置全局源(替代手动建文件):
bash
# npm
npm config set registry https://registry.npmmirror.com/
# yarn
yarn config set registry https://registry.npmmirror.com/
# pnpm
pnpm config set registry https://registry.npmmirror.com/
三、构建工具配置文件(★★★★★ 工程化项目核心)
构建工具是现代前端项目的核心 ,负责开发服务、代码编译、打包优化、热更新 等,主流构建工具为Vite (现代项目首选,速度快)、Webpack (传统项目 / 复杂配置)、Rollup(库开发专属),以下讲解最常用的 Vite 和 Webpack 配置。
1. Vite 配置文件 - vite.config.js/ts
核心作用 :Vite 的核心配置文件,覆盖开发服务、打包规则、路径解析、插件、代理跨域 等所有功能,Vite 项目必配 (Vue3/React/TS/ 原生 JS 都适用)。适用场景 :所有基于 Vite 的前端项目(目前 80% 以上的现代前端项目)。核心配置项 + 实用示例(Vue3+Vite 示例,React 仅需替换插件):
javascript
// vite.config.js(ESModule,需package.json配置type: module)
import { defineConfig } from 'vite' // 定义配置,提供类型提示
import vue from '@vitejs/plugin-vue' // Vue3插件
import path from 'path' // 路径解析(node核心模块)
// https://vitejs.dev/config/
export default defineConfig(({ mode }) => {
// mode:环境模式(development/production/test),可根据环境动态配置
return {
plugins: [vue()], // 配置插件(Vue/React/TS等都需对应插件)
resolve: {
alias: { // 路径别名,简化导入(如@/components → src/components)
'@': path.resolve(__dirname, 'src'),
'components': path.resolve(__dirname, 'src/components')
},
extensions: ['.js', '.ts', '.vue', '.json'] // 省略文件后缀
},
server: { // 开发服务配置(热更新、跨域、端口)
port: 3000, // 开发端口
open: true, // 启动后自动打开浏览器
host: '0.0.0.0', // 允许局域网访问(手机/其他电脑调试)
proxy: { // 代理跨域(解决开发环境接口跨域问题,业务核心)
'/api': { // 匹配/api开头的请求
target: 'https://api.example.com', // 目标接口地址
changeOrigin: true, // 跨域核心:修改请求头的Origin
rewrite: (path) => path.replace(/^\/api/, '') // 重写路径(按需)
}
}
},
build: { // 生产打包配置(优化、产物、兼容)
outDir: 'dist', // 打包输出目录(默认dist)
assetsDir: 'static', // 静态资源目录(css/js/img等)
minify: 'esbuild', // 压缩工具(esbuild比terser快,默认)
sourcemap: mode === 'production' ? false : true, // 生产环境关闭sourcemap(安全/体积)
rollupOptions: { // Rollup底层配置(拆分代码、按需加载)
output: {
// 静态资源按类型拆分,便于缓存
chunkFileNames: 'js/[name]-[hash].js',
assetFileNames: '[ext]/[name]-[hash].[ext]'
}
}
},
css: { // CSS专属配置(预处理器、模块化、postcss)
preprocessorOptions: { // 配置Less/Sass/Scss全局变量
scss: {
additionalData: '@import "@/styles/variables.scss";'
}
},
modules: { // CSS模块化配置
generateScopedName: '[name]__[local]___[hash:base64:5]'
}
},
define: { // 全局常量定义(客户端可直接访问)
'process.env.VITE_APP_TITLE': JSON.stringify('My Vite App')
}
}
})
关键技巧:
defineConfig:必须使用,提供配置项的类型提示,避免手写报错;- 路径别名
@:现代项目必配,简化深层路径导入; - 代理跨域
server.proxy:开发环境解决跨域的唯一优雅方案,生产环境用 Nginx 反向代理; - 环境模式
mode:可根据development/production动态切换配置(如开发开 sourcemap,生产关闭)。
2. Webpack 配置文件
Webpack 配置比 Vite 复杂,分基础配置 webpack.config.js和环境专属配置 webpack.dev.js/webpack.prod.js,通过webpack-merge合并,传统项目 / React CRA / 老 Vue2 项目常用 。核心文件:
webpack.config.js:公共配置(入口、输出、模块、插件);webpack.dev.js:开发环境配置(devServer、热更新、sourcemap);webpack.prod.js:生产环境配置(压缩、优化、代码分割);webpack.common.js:可选,抽离公共配置,由 dev/prod 继承。基础实用示例(webpack.config.js):
javascript
// webpack.config.js(CommonJS,默认无需package.json type: module)
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin'); // 生成HTML入口
const MiniCssExtractPlugin = require('mini-css-extract-plugin'); // 提取CSS为单独文件
module.exports = {
entry: './src/main.js', // 项目入口文件
output: { // 打包输出配置
path: path.resolve(__dirname, 'dist'), // 输出目录(绝对路径)
filename: 'js/[name].[hash:8].js', // 输出JS文件名(加hash防缓存)
clean: true // 打包前清空dist目录(webpack5+新增)
},
module: { // 模块规则(处理非JS文件,如Vue/React/CSS/图片,核心)
rules: [
{
test: /\.vue$/, // 匹配.vue文件
loader: 'vue-loader', // 处理Vue单文件组件
options: { compilerOptions: { preserveWhitespace: false } }
},
{
test: /\.(css|scss)$/, // 匹配CSS/Scss文件
use: [
process.env.NODE_ENV === 'development' ? 'style-loader' : MiniCssExtractPlugin.loader,
'css-loader', // 解析@import和url()
'postcss-loader', // 自动加CSS前缀、px转rem
'sass-loader' // 编译Scss为CSS
]
},
{
test: /\.(png|jpg|svg|gif)$/, // 匹配图片
type: 'asset/resource', // webpack5+,替代file-loader,输出单独文件
generator: { filename: 'img/[name].[hash:8][ext]' }
}
]
},
plugins: [ // 插件(扩展Webpack功能,如生成HTML、提取CSS、压缩)
new HtmlWebpackPlugin({
template: './public/index.html', // 模板HTML
title: 'Webpack Project',
minify: process.env.NODE_ENV === 'production' ? { collapseWhitespace: true } : false
}),
new MiniCssExtractPlugin({ filename: 'css/[name].[hash:8].css' }) // 提取CSS
],
resolve: {
alias: { '@': path.resolve(__dirname, 'src') },
extensions: ['.js', '.vue', '.json']
},
devServer: { // 开发服务(类似Vite的server)
port: 8080,
open: true,
proxy: { '/api': { target: 'https://api.example.com', changeOrigin: true } }
},
devtool: process.env.NODE_ENV === 'development' ? 'cheap-module-source-map' : false // sourcemap
};
关键区别 :Webpack 是打包式构建 (先打包再启动),Vite 是按需编译(原生 ESModule,启动快),现代项目优先选 Vite。
3. Rollup 配置文件 - rollup.config.js/ts
核心作用 :Rollup 是库开发专属构建工具 (如 Vue/React/axios 等库都是 Rollup 构建),擅长代码树摇、按需打包、生成纯净的 ESModule/CommonJS 产物 ,应用开发几乎不用 。适用场景:开发前端库 / 组件库(如自定义 UI 组件、工具库)。
四、框架专属配置文件(★★★★☆ 框架项目必配)
Vue/React/Next/Nuxt 等框架会提供专属配置文件,用于修改框架默认配置(如跨域、打包、插件),无需修改构建工具的底层配置,更简洁。
1. Vue 框架配置
(1)vue.config.js - Vue CLI 项目配置(Vue2/Vue3 CLI)
核心作用 :Vue CLI(@vue/cli)的专属配置文件,覆盖 Webpack 底层配置、开发服务、打包优化等,Vue CLI 创建的项目必配 (区别于 Vite+Vue 项目)。实用示例:
javascript
// vue.config.js
module.exports = {
publicPath: process.env.NODE_ENV === 'production' ? '/vue-project/' : '/', // 公共路径(部署时的基础路径)
outputDir: 'dist', // 打包目录
devServer: { proxy: { '/api': { target: 'https://api.example.com', changeOrigin: true } } }, // 跨域
configureWebpack: { // 直接修改Webpack配置
resolve: { alias: { '@': require('path').resolve(__dirname, 'src') } }
},
chainWebpack: (config) => { // 链式修改Webpack配置(更灵活,推荐)
config.module.rule('svg').exclude.add(require('path').resolve(__dirname, 'src/icons'));
},
css: { loaderOptions: { scss: { additionalData: '@import "@/styles/variables.scss";' } } } // CSS全局变量
};
(2)nuxt.config.js/ts - Nuxt.js/Nuxt3 配置
核心作用 :Nuxt(Vue 服务端渲染 / 静态站点生成框架)的专属配置,覆盖路由、渲染模式、插件、模块、打包等,Nuxt 项目必配。
2. React 框架配置
(1)craco.config.js - React CRA 项目配置
核心作用 :Create React App(CRA)默认隐藏 Webpack 配置 ,craco(Create React App Configuration Override)可在不eject的情况下修改 Webpack/Babel 配置,React CRA 项目必配 。适用场景 :使用npx create-react-app创建的 React 项目。
(2)next.config.js/ts - Next.js 配置
核心作用 :Next.js(React 服务端渲染 / 静态站点生成框架)的专属配置,覆盖路由、打包、代理、静态资源等,Next.js 项目必配。
五、语言 / 语法检查配置文件(★★★★☆ 工程化 / 团队协作必配)
用于规范代码语法、统一代码格式,减少团队协作的代码冲突,提升代码质量,包含 TS 编译、ESLint 语法检查、Prettier 代码格式化、StyleLint 样式检查。
1. TypeScript 配置 - tsconfig.json
核心作用 :TS 编译器的核心配置文件,指定 TS 编译为 JS 的目标版本、模块规范、输出目录、类型检查规则 等,TS 项目必配 (Vue3+TS/React+TS / 库开发)。核心配置项 + 实用示例:
{
"compilerOptions": {
"target": "ES2020", // 编译为ES2020版本(兼容现代浏览器)
"module": "ESNext", // 模块规范(ESModule)
"moduleResolution": "Node", // 模块解析方式(Node.js)
"lib": ["ES2020", "DOM", "DOM.Iterable"], // 引入的库类型(DOM/ES6等)
"strict": true, // 开启严格模式(必配,提升TS类型检查质量)
"jsx": "preserve", // JSX处理方式(Vue/React按需配置,preserve保留JSX)
"sourceMap": true, // 生成sourcemap
"resolveJsonModule": true, // 允许导入JSON文件
"esModuleInterop": true, // 兼容CommonJS模块(如require导入ESModule)
"skipLibCheck": true, // 跳过第三方库的类型检查(提升编译速度)
"forceConsistentCasingInFileNames": true, // 强制文件名大小写一致(避免跨平台问题)
"baseUrl": "./", // 基础路径
"paths": { // 路径别名(与Vite/Webpack的alias一致)
"@/*": ["src/*"],
"components/*": ["src/components/*"]
},
"outDir": "./dist", // 编译输出目录(库开发必配,应用开发可选)
"rootDir": "./src" // 源码根目录
},
"include": ["src/**/*", "src/**/*.vue"], // 要编译的文件(src下所有文件)
"exclude": ["node_modules", "dist", "**/*.test.ts"] // 排除的文件
}
关键技巧:
strict: true:TS 项目必配,开启严格的类型检查,提前发现错误;paths:路径别名必须与构建工具(Vite/Webpack)的alias一致,否则会报导入错误;include/exclude:精准指定编译范围,提升编译速度。
2. ESLint 配置 - .eslintrc.js/ts/json + .eslintignore
(1).eslintrc.js - ESLint 核心配置
核心作用 :ESLint 是JavaScript/TS 语法检查工具 ,检测代码中的语法错误、不规范写法(如未定义变量、多余空格、不符合规范的命名),团队协作必配 。实用示例(Vue3+TS+ESLint):
javascript
module.exports = {
root: true, // 根配置,停止向上查找
env: { // 运行环境(指定全局变量,如browser/node/vue)
browser: true,
node: true,
es2020: true,
vue: true
},
parser: 'vue-eslint-parser', // Vue文件解析器
parserOptions: { // 解析器选项
parser: '@typescript-eslint/parser', // TS解析器
ecmaVersion: 2020,
sourceMap: true,
ecmaFeatures: { jsx: true }
},
extends: [ // 继承预设规则(无需手动写大量规则,业务核心)
'eslint:recommended', // ESLint官方推荐规则
'plugin:vue/vue3-recommended', // Vue3官方推荐规则
'plugin:@typescript-eslint/recommended', // TS官方推荐规则
'prettier', // 兼容Prettier(关闭ESLint中与Prettier冲突的规则)
'plugin:prettier/recommended' // 开启Prettier作为ESLint规则
],
plugins: ['vue', '@typescript-eslint', 'prettier'], // 启用的插件
rules: { // 自定义规则(覆盖预设规则,0=关闭,1=警告,2=错误)
'vue/multi-word-component-names': 0, // 关闭Vue组件名多单词规则(按需)
'@typescript-eslint/no-unused-vars': 1, // 未使用变量设为警告
'prettier/prettier': 2, // Prettier格式错误设为错误
'no-console': process.env.NODE_ENV === 'production' ? 2 : 1, // 生产环境禁止console
'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0 // 生产环境禁止debugger
}
};
(2).eslintignore - ESLint 忽略配置
核心作用 :指定 ESLint无需检查 的文件 / 文件夹,如依赖包、打包产物、配置文件。实用配置:
node_modules/
dist/
build/
*.config.js
public/
3. Prettier 配置 - .prettierrc.js/ts/json + .prettierignore
核心作用 :Prettier 是代码格式化工具 ,统一代码的缩进、换行、引号、空格 等格式,比 ESLint 的格式化功能更强大,团队协作必配。
(1).prettierrc.js - 核心配置
module.exports = {
printWidth: 120, // 每行代码最大长度
tabWidth: 2, // 缩进2个空格
useTabs: false, // 使用空格而非制表符
singleQuote: true, // 使用单引号(替代双引号)
semi: true, // 语句末尾加分号
trailingComma: 'es5', // 尾逗号(ES5规范,如数组/对象最后一项加逗号)
bracketSpacing: true, // 对象大括号前后加空格({ a: 1 } 而非 {a:1})
arrowParens: 'always', // 箭头函数参数始终加括号((a) => a 而非 a => a)
vueIndentScriptAndStyle: false, // 不缩进Vue的script和style标签
endOfLine: 'lf' // 换行符(lf:Mac/Linux,crlf:Windows,团队统一lf)
};
(2).prettierignore - 忽略配置
与.eslintignore基本一致,忽略依赖包、打包产物等。
4. StyleLint 配置 - .stylelintrc.js + .stylelintignore
核心作用 :CSS/Scss/Less 样式检查工具 ,检测样式中的语法错误、不规范写法(如无效属性、重复样式、不符合规范的命名),大型项目 / 样式规范严格的项目必配。
六、环境与部署配置文件(★★★★☆ 生产项目必配)
用于区分开发 / 测试 / 生产环境 的配置(如接口地址、密钥),以及生产环境部署的配置(如 Nginx、静态资源)。
1. 环境变量文件 - .env + .env.*
核心作用 :定义环境专属变量 (如接口基础地址、项目标题、是否开启调试),实现一套代码适配多环境 (开发 / 测试 / 生产),生产项目必配 。命名规范(Vite/Webpack/CRA 通用):
-
.env:全局环境变量,所有环境生效; -
.env.development:开发环境(npm run dev); -
.env.production:生产环境(npm run build); -
.env.test:测试环境(npm run build --mode test); -
变量前缀 :Vite 要求
VITE_,React CRA 要求REACT_APP_,Vue CLI 无强制前缀(推荐VUE_APP_),无前缀的变量无法在客户端访问 。实用示例(.env.development - 开发环境):开发环境接口地址
VITE_API_BASE_URL = https://dev-api.example.com
项目标题
VITE_APP_TITLE = 开发环境-我的项目
是否开启调试
VITE_DEBUG = true
实用示例(.env.production - 生产环境):
# 生产环境接口地址
VITE_API_BASE_URL = https://api.example.com
# 项目标题
VITE_APP_TITLE = 我的项目
# 是否开启调试
VITE_DEBUG = false
客户端访问方式:
javascript
// Vue/React/原生JS通用
console.log(import.meta.env.VITE_API_BASE_URL); // Vite
console.log(process.env.REACT_APP_API_BASE_URL); // React CRA
console.log(process.env.VUE_APP_API_BASE_URL); // Vue CLI
关键技巧 :.env文件包含敏感信息(如接口地址、密钥),必须添加到.gitignore ,同时创建.env.example示例文件供团队参考。
2. PostCSS 配置 - postcss.config.js
核心作用 :PostCSS 是CSS 后置处理器 ,通过插件实现自动加 CSS 前缀、px 转 rem/vw、CSS 新特性兼容 等,所有项目必配 (Vite/Webpack 会自动识别)。实用示例:
javascript
module.exports = {
plugins: {
'autoprefixer': {}, // 自动加CSS前缀(如-webkit-、-moz-,根据browserslist配置)
'postcss-pxtorem': { // px转rem(移动端适配,按需配置)
rootValue: 37.5, // 设计稿375px,1rem=37.5px
propList: ['*'], // 所有CSS属性都转rem
exclude: /node_modules/ // 排除第三方库
},
'postcss-px-to-viewport': { // px转vw(移动端适配,替代rem,按需配置)
viewportWidth: 375, // 设计稿宽度
unitPrecision: 2, // 保留2位小数
viewportUnit: 'vw'
}
}
};
3. Babel 配置 - babel.config.js/.babelrc
核心作用 :Babel 是JavaScript 编译器 ,将ES6+/TS/JSX 编译为ES5 ,实现低版本浏览器兼容,需要兼容低版本浏览器的项目必配 。适用场景 :Vue/React 项目、需要兼容 IE11 等低版本浏览器的项目。实用示例(babel.config.js):
javascript
module.exports = {
presets: [
'@babel/preset-env', // 编译ES6+为ES5
'@babel/preset-typescript', // 编译TS为JS
'@vue/babel-preset-jsx' // 编译Vue JSX
],
plugins: [
'@babel/plugin-proposal-class-properties', // 支持类的属性初始化
'@babel/plugin-transform-runtime' // 复用Babel辅助代码,减少打包体积
]
};
4. Nginx 配置 - nginx.conf(前端部署核心)
核心作用 :Nginx 是高性能的 HTTP 服务器 / 反向代理 ,前端生产环境部署的核心配置 ,负责静态资源托管、反向代理(解决跨域)、gzip 压缩、缓存配置、域名绑定 等,所有生产部署的前端项目必配 。前端专属实用配置(直接复用,覆盖 99% 部署场景):
javascript
# 全局配置
worker_processes 1;
events { worker_connections 1024; }
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# gzip压缩(大幅减小静态资源体积,提升加载速度,必配)
gzip on;
gzip_min_length 1k;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
# 项目配置(核心)
server {
listen 80; # 监听80端口(HTTP)
server_name localhost example.com; # 域名(本地/生产域名)
# 静态资源托管(指向打包后的dist目录)
root /usr/local/nginx/html/dist; # 前端dist目录的绝对路径
index index.html index.htm; # 入口HTML
# 解决Vue/React路由刷新404问题(前端路由为history模式,必配)
location / {
try_files $uri $uri/ /index.html; # 找不到文件时重定向到index.html
}
# 反向代理(解决生产环境接口跨域,替代开发环境的Vite/Webpack代理)
location /api/ {
proxy_pass https://api.example.com/; # 目标接口地址
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 静态资源缓存(CSS/JS/图片等,提升加载速度)
location ~* \.(css|js|png|jpg|svg|gif)$ {
expires 7d; # 缓存7天
add_header Cache-Control "public, max-age=604800";
}
}
}
关键技巧:
try_files $uri $uri/ /index.html:前端 history 路由必配,解决刷新页面 404 问题;gzip:必配,大幅减小 CSS/JS 体积;proxy_pass:生产环境解决跨域的唯一方案。
七、编辑器 / 团队规范配置文件(★★★★☆ 团队协作必配)
用于统一团队的编辑器 / IDE 配置,避免因个人配置不同导致的代码格式冲突,提升协作效率。
1. .editorconfig - 跨编辑器配置文件
核心作用 :跨编辑器 / IDE 的代码格式配置 ,支持 VSCode/WebStorm/Sublime 等所有主流编辑器,团队协作必配 。实用示例(直接复用):
# 根配置
root = true
# 所有文件适用
[*]
charset = utf-8 # 字符编码
indent_style = space # 缩进用空格
indent_size = 2 # 缩进2个空格
end_of_line = lf # 换行符lf
trim_trailing_whitespace = true # 去除行尾多余空格
insert_final_newline = true # 文件末尾加空行
# 特定文件适用
[*.md]
trim_trailing_whitespace = false # Markdown文件保留行尾空格
关键技巧 :VSCode 需安装EditorConfig for VS Code插件才能识别。
2. .vscode/settings.json - VSCode 专属配置
核心作用 :VSCode 编辑器的项目级配置 ,统一团队的 VSCode 插件、格式化、语法检查等,使用 VSCode 的团队必配 。实用示例(直接复用):
{
// 编辑器配置
"editor.tabSize": 2,
"editor.insertSpaces": true,
"editor.endOfLine": "lf",
// 保存时自动格式化+修复ESLint错误(核心,团队协作必配)
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
// 默认格式化工具
"editor.defaultFormatter": "esbenp.prettier-vscode",
// Vue文件格式化
"[vue]": { "editor.defaultFormatter": "vue.volar" },
// TS/JS文件格式化
"[typescript]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },
// 禁用默认的HTML格式化
"html.format.enable": false,
// 推荐安装的插件(团队统一)
"extensions.recommendations": [
"vue.volar",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"stylelint.vscode-stylelint"
]
}
关键技巧 :将.vscode/settings.json提交到 Git,.vscode/其他文件(如extensions.json、launch.json)按需提交。
八、工程化进阶配置文件(★★★☆☆ 中大型项目必配)
用于提升项目的工程化质量,如 Git 提交规范、自动化检查、钩子函数等,中大型团队 / 项目必备。
1. Husky 配置 - .husky/
核心作用 :Husky 是Git 钩子工具 ,可在 Git 提交(commit)、推送(push)等阶段执行自定义脚本 (如 ESLint 检查、Prettier 格式化、TS 编译),团队协作必配 ,避免不规范代码提交到仓库。核心文件 :.husky/pre-commit(提交前执行)、.husky/commit-msg(提交信息检查),由 Husky 自动生成。
2. lint-staged 配置 - lint-staged.config.js
核心作用 :配合 Husky 使用,仅对 Git 暂存区的代码进行检查 / 格式化 ,而非整个项目,大幅提升执行速度,团队协作必配 。实用示例:
javascript
module.exports = {
'*.{js,ts,vue}': ['eslint --fix', 'prettier --write'], // JS/TS/Vue文件:ESLint修复+Prettier格式化
'*.{css,scss}': ['stylelint --fix', 'prettier --write'], // CSS/Scss文件:StyleLint修复+Prettier格式化
'*.md': ['prettier --write'] // Markdown文件:Prettier格式化
};
3. CommitLint 配置 - commitlint.config.js
核心作用 :规范 Git 提交信息 ,要求提交信息遵循固定格式(如feat: 新增登录功能),便于团队协作和版本日志生成,中大型项目必配 。实用示例:
javascript
module.exports = {
extends: ['@commitlint/config-conventional'], // 继承Angular提交规范
rules: {
'type-enum': [2, 'always', [
'feat', // 新功能
'fix', // Bug修复
'docs', // 文档修改
'style', // 代码格式(不影响逻辑)
'refactor', // 重构(既不是新功能也不是Bug修复)
'test', // 测试
'chore' // 构建/工具配置修改
]],
'subject-case': [0] // 提交描述不限制大小写
}
};
提交信息格式 :type(scope): subject,如feat(login): 新增短信登录功能、fix(home): 修复轮播图卡顿问题。
九、按项目类型梳理「必备配置文件清单」
为了让你快速对号入座,按主流项目类型梳理必备配置文件,避免冗余:
1. 原生 JS 基础项目(无框架 / 构建工具)
package.json + .gitignore + README.md
2. 现代工程化项目(Vue3+Vite+TS)
必选 :package.json + .gitignore + README.md + vite.config.js + tsconfig.json + .env.development + .env.production + postcss.config.js工程化 :.eslintrc.js + .prettierrc.js + .editorconfig + .vscode/settings.json团队协作 :.husky/ + lint-staged.config.js + commitlint.config.js
3. React+Vite+TS 项目
与 Vue3+Vite+TS 一致,仅需替换 Vite 插件为@vitejs/plugin-react。
4. Vue2+Vue CLI 项目
必选 :package.json + .gitignore + README.md + vue.config.js + tsconfig.json(TS 项目) + .env.development + .env.production + postcss.config.js其余:与 Vue3+Vite 一致。
5. React CRA 项目
必选 :package.json + .gitignore + README.md + craco.config.js + tsconfig.json(TS 项目) + .env.development + .env.production其余:与 Vue3+Vite 一致。
6. 前端库 / 组件库开发(Rollup+TS)
必选 :package.json + .gitignore + README.md + rollup.config.js + tsconfig.json + .eslintrc.js + .prettierrc.js
总结
前端配置文件虽多,但按功能分类后逻辑清晰 ,核心围绕 「项目基础→构建工具→框架专属→语言规范→环境部署→团队协作」 六大维度,关键总结如下:
- 必选配置 :所有项目都需要
package.json+.gitignore+README.md,工程化项目加构建工具配置(Vite/Webpack); - 环境区分 :生产项目必配
.env.*环境变量文件,遵循前缀规范,敏感信息不提交 Git; - 团队协作:必配 ESLint+Prettier+.editorconfig+.vscode/settings.json,中大型项目加 Husky+lint-staged+CommitLint;
- 部署核心 :生产环境必配 Nginx 配置,解决静态资源托管、路由刷新 404、跨域、gzip 压缩;
- 现代趋势 :优先使用Vite 替代 Webpack,pnpm 替代 npm/yarn,TS替代原生 JS,提升开发效率和代码质量。