当前位置: 首页 > news >正文

Vue3源码学习-提交限制

文章目录

  • 前言
    • ✅ 1. ESLint 限制
      • 🔧 配置位置:
      • ✅ 启用了哪些规则(核心):
      • 📦 使用的插件和标准:
    • ✅ 2. TSC 编译限制
      • 关键选项:
    • ✅ 3. Git Hook 校验工具链
      • 配置例子(`package.json`):
    • ✅ 总结


前言

Vue 3 官方项目对 eslinttsc 的严格限制,主要是通过 集中统一的配置文件 + Git Hook 工具链(如 lint-staged、simple-git-hooks、husky) 实现的,具体如下:


✅ 1. ESLint 限制

🔧 配置位置:

.eslintrc.cjs

✅ 启用了哪些规则(核心):

rules: {'no-console': ['error', { allow: ['warn', 'error', 'info'] }],'no-debugger': 'error',...
}

解释:

  • 禁止所有 console.*,仅保留 warn, error, info
  • 提交前如果不符合规则,Git 会拒绝提交(通过 pre-commit hook)

📦 使用的插件和标准:

eslint
eslint-plugin-vue
@vue/eslint-config-prettier
@vue/eslint-config-typescript

✅ 2. TSC 编译限制

Vue 项目结构严格使用了:

tsconfig.json
tsconfig.base.json
tsconfig.config.json

关键选项:

{"compilerOptions": {"strict": true,"declaration": true,"isolatedModules": true,"noImplicitAny": true,"noUnusedLocals": true,"noEmitOnError": true}
}
  • isolatedModules: true:必须为所有 export function 添加返回类型(你遇到的)
  • noEmitOnError: true:类型报错时拒绝生成 .d.ts 文件
  • declaration: true:生成 .d.ts,用于包发布和 IDE 智能提示

✅ 3. Git Hook 校验工具链

官方用的通常是:

simple-git-hooks
lint-staged

配置例子(package.json):

"simple-git-hooks": {"pre-commit": "lint-staged"
},
"lint-staged": {"*.{ts,js,json}": ["eslint --fix","prettier --write"]
}

🔁 你执行 git commit 时,它自动执行:

  1. eslint --fix
  2. prettier --write
  3. 拒绝不符合标准的代码提交(你看到的就是这个)

✅ 总结

限制机制实现方式示例
ESLint.eslintrc.cjs 中的规则设置no-console, no-debugger
TypeScripttsconfig.json 严格模式isolatedModules, noEmitOnError
Git 钩子simple-git-hooks + lint-staged阻止格式错误代码提交
http://www.dtcms.com/a/166004.html

相关文章:

  • pytorch中的原地与非原地操作
  • 软件系统验收报告:功能、性能稳定性如何?数据导出卡顿咋回事?
  • GPU集群中的超节点
  • 【Hot 100】 148. 排序链表
  • AI Engine Kernel and GraphProgramming--知识分享1
  • 从有线到无线:冶炼工厂的高效转型
  • 视觉问答论文解析:《Skywork R1V2: Multimodal Hybrid Reinforcement Learning for Reasoning》
  • 数电发票整理:免费实用工具如何高效解析 XML 发票数据
  • 数据采集,埋点模型
  • 论文公式根据章节自动编号教程
  • 阿里云服务迁移实战: 06-切换DNS
  • 10.idea中创建springboot项目_jdk17
  • 大连理工大学选修课——机器学习笔记(1):概述
  • 【Agent】MCP协议 | 用高德MCP Server制作旅游攻略
  • Java 表达式及运算符的优先级与结合性入门
  • Windows 10 环境二进制方式安装 MySQL 8.0.41
  • 异步协程中基于 aiomysql 的异步数据库操作
  • 第五部分:进阶项目实战
  • 2025平航杯—团队赛
  • c#确定按钮5秒自动确定
  • 涨薪技术|0到1学会性能测试第44课-apachetop模块监控
  • iview内存泄漏
  • 【Android】轻松实现实时FPS功能
  • 开源协议全解析:类型、选择与法律风险规避指南
  • Qwen3本地化部署,准备工作:SGLang
  • UDP报文结构
  • 跨境电商生死劫:IP筛查三法则破解封号魔咒
  • Hadoop 集群基础指令指南
  • 某大麦某眼手机端-抢票
  • 制作一款打飞机游戏37:调度器预览