前端工程化项目中全类型配置文件的详细解析

核心前提说明

  1. 前端配置文件分 **「静态配置(json/ini)」 「动态配置(js/ts)」**,动态配置支持逻辑判断 / 引入依赖,灵活性更高,业务中优先用*.js/ts(如vite.config.js而非vite.config.json);
  2. 命名规范 :以.开头的是隐藏配置文件 (系统 / 工具识别),无.的是显式配置(如package.json);
  3. 优先级 :同类型配置文件,后缀 js/ts > json > yaml/yml (如.eslintrc.js优先级高于.eslintrc.json);
  4. 按需存在 :配置文件随项目技术栈变化(如 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)、无前缀(固定版本);
  • 区分dependenciesdevDependencies:生产依赖用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.jsonlaunch.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

总结

前端配置文件虽多,但按功能分类后逻辑清晰 ,核心围绕 「项目基础→构建工具→框架专属→语言规范→环境部署→团队协作」 六大维度,关键总结如下:

  1. 必选配置 :所有项目都需要package.json + .gitignore + README.md,工程化项目加构建工具配置(Vite/Webpack);
  2. 环境区分 :生产项目必配.env.*环境变量文件,遵循前缀规范,敏感信息不提交 Git;
  3. 团队协作:必配 ESLint+Prettier+.editorconfig+.vscode/settings.json,中大型项目加 Husky+lint-staged+CommitLint;
  4. 部署核心 :生产环境必配 Nginx 配置,解决静态资源托管、路由刷新 404、跨域、gzip 压缩
  5. 现代趋势 :优先使用Vite 替代 Webpack,pnpm 替代 npm/yarn,TS替代原生 JS,提升开发效率和代码质量。
相关推荐
曲幽17 小时前
FastAPI实战:WebSocket长连接保持与心跳机制,从入门到填坑
javascript·python·websocket·keep-alive·fastapi·heartbeat·connection
码云数智-大飞17 小时前
前端性能优化全链路实战:从加载速度到渲染效率的极致提速方案
前端·性能优化
锅包一切17 小时前
【蓝桥杯JavaScript基础入门】一、JavaScript基础
开发语言·前端·javascript·蓝桥杯
NEXT0617 小时前
HTTP 协议演进史:从 1.0 到 2.0
前端·网络协议·面试
好学且牛逼的马18 小时前
从“混沌初开”到“有序统一”:Java集合框架发展历程与核心知识点详解
前端·数据库·python
嵌入式×边缘AI:打怪升级日志18 小时前
编写Bootloader实现下载功能
java·前端·网络
恋猫de小郭19 小时前
Flutter 设计包解耦新进展,material_ui 和 cupertino_ui 发布预告
android·前端·flutter
linux_cfan19 小时前
[2026深度评测] 打造“抖音级”丝滑体验:Web直播播放器选型与低延迟实践
前端·javascript·html5
天天向上的鹿茸19 小时前
前端适配方案
前端·javascript
We་ct20 小时前
LeetCode 226. 翻转二叉树:两种解法(递归+迭代)详解
前端·算法·leetcode·链表·typescript