Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@lzwme/fed-lint-helper

lzwme125MIT2.6.6TypeScript support: included

前端项目编码质量 lint 检测辅助工具。用于辅助大型长期研发的前端项目渐进式的迁移与改进编码规范约束。

fed, lint, lint-helper, typescript, tsc, commitlint, eslint, prettier, jest

readme

@lzwme/fed-lint-helper

@lzwme/fed-lint-helper

NPM version node version license MIT

build status npm download GitHub issues GitHub forks GitHub stars

一个前端项目编码质量静态检查(Lint)辅助工具。用于辅助长期研发的大型前端项目渐进式的升级、迁移或改进编码规范约束规则。

功能特性(Features)

  • 白名单机制。升级新版本、引入新规则时开启白名单模式,技术栈更新改造影响成本低
  • 可选的多线程、多进程执行模式。多项静态检查并行执行效率更高
  • 支持缓存能力。开启缓存二次执行效率显著提升,避免重复执行浪费时间

已支持的 Lint 能力:

  • eslint 自定义 ESLint 检测执行
  • tscheck 自定义 TypeScript 检测执行
  • jest 自定义 jest 单元测试的执行
  • prettier 自定义 prettier 编码风格检测与格式化
  • commitlint 自定义遵循 Angular commit style 的 git 提交规范(用于 git hooks)
  • jira 自定义关联 jira 的检测逻辑(TODO: 方案说明)
  • more...

方案流程图

安装(Install)

# use pnpm
pnpm add -D @lzwme/fed-lint-helper
# use yarn
yarn add -D @lzwme/fed-lint-helper
# use npm
npm i -D @lzwme/fed-lint-helper

使用(Useage)

命令行方式(Command Line Interface)

flh --help

# 在当前目录下生成默认的配置文件 .flh.config.cjs
flh init --config

# typescript check
flh --tscheck
# eslint check
flh --eslint
# jest check
flh --jest
# git commit lint
flh --commitlint
# prettier fix
flh --prettier --fix

# Multitask parallel execution
flh --tscheck --eslint --jest

其他辅助工具命令(Others):

# 目录删除
flh rm --help
# 示例:删除目录 a 和 dist
flh rm ./a ./dist -f

# 消息通知
flh notify --help
# 示例:企业微信机器人消息通知
flh notify "任务执行失败!@all" --wx-work <web hook key1> <web hook key2>

结合 huskygit hooks 使用

推荐结合 husky 配置本地 git hooks。参考示例:

# .husky/commit-msg
npm exec flh --commitlint

# .husky/pre-commit
npm exec flh -- --eslint --tscheck --jest --only-staged
npm exec flh -- --prettier --only-staged --fix
# git add --update

CI 持续集成过程中可视具体需求配置。

API 调用

提供了 TsCheckESLintCheck 等类对象供 API 方式调用,以便自定义处理逻辑在 CI 构建中的集成。

import { TsCheck, ESLintCheck } from '@lzwme/fed-lint-helper';

// typescript check
const tsCheck = new TsCheck({
  exitOnError: false,
  src: ['src'],
  // checkOnInit: false,
  // debug: true,
  // toWhiteList: true,
  // cache: true,
  // removeCache: false,
  // tsConfigFileName: 'tsconfig.eslint.json',
  // silent: false,
});
const res = await tsCheck.start();
console.log(res);

// eslint check
const eslintCheck = new ESLintCheck({
  exitOnError: false,
  src: ['src'],
  eslintOptions: {
    overrideConfig: {
      rules: { eqeqeq: 'warn' },
      // rulePaths: ['./eslint-rules/'],
      // errorOnUnmatchedPattern: true,
    },
  },
  // checkOnInit: false,
  // cache: argv.includes('cache'),
  // removeCache: argv.includes('nocache'),
  // silent: argv.includes('silent'),
  // debug: argv.includes('debug'),
  // toWhiteList: true,
  // fix: argv.includes('fix'),
});

let res = await eslintCheck.start();
console.log(res);
res = await eslintCheck.start(['test/test/test-cases/ts-check-test-1.ts', 'src/ts-check.ts']);
console.log(res);

更多细节可参考 API 文档

API 文档

开发(Development)

本地二次开发:

git clone https://github.com/lzwme/fed-lint-helper
pnpm install
pnpm dev
# npm link

或者 fork 本项目进行代码贡献。

欢迎贡献想法与代码。

License

@lzwme/fed-lint-helper is released under the MIT license.

该插件由志文工作室开发和维护。

changelog

Changelog

All notable changes to this project will be documented in this file. See standard-version for commit guidelines.

2.6.6 (2025-01-17)

Bug Fixes

  • ESLint: 修复 ESLint fix 不生效的问题 (d612d23)

2.6.5 (2024-12-10)

Bug Fixes

  • 调整 debug 参数默认值 (fefe468)

2.6.4 (2024-10-23)

Bug Fixes

  • 修复 tsc 异常;修复 jira check 多次执行格式重复处理的问题 (302e0a4)

2.6.3 (2024-10-23)

2.6.2 (2024-06-14)

Bug Fixes

  • 修复自定义配置文件加载失败的问题 (c0afe31)

2.6.1 (2024-06-05)

Bug Fixes

  • 配置文件支持 cjs、js、mjs 后缀类型,以解决 ESM 模块项目下加载配置文件异常的问题 (fd4a667)

2.6.0 (2024-04-10)

Features

  • eslint: 适配支持 ESLint V9 版本 (7534c56)

Bug Fixes

  • 修复 cjs 构建转义 import 动态导入为 require 的问题 (96f3e73)

2.5.2 (2024-01-18)

Bug Fixes

  • 修正 init 命令找不到 flh tpl 的问题;update deps (fc38574)

2.5.1 (2023-12-12)

Bug Fixes

  • 修复输出为 esm 配置错误的问题 (ed3c81f)

2.5.0 (2023-07-25)

Features

  • jira-check: 新增whiteProjectCommit参数,支持前端项目pipeline检查跳过后端commit信息 (0beced6)

2.4.1 (2023-07-24)

2.3.4 (2023-07-18)

2.3.3 (2023-07-18)

2.3.2 (2023-05-12)

2.3.1 (2023-02-17)

Bug Fixes

  • 修复 saveCache 识别是否为白名单文件逻辑错误的问题 (fd2010e)

2.3.0 (2023-02-07)

Features

  • jira pipeline 新增 verify 参数,支持自定义验证规则;调整 types 类型定义的目录结构 (54f73d0)

Bug Fixes

  • 修复 变更build输出目录路径后 init config 失效的问题 (372a42e)
  • 修复模糊删除多个文件时,force 为 false 只会确认一次的问题 (9216d39)
  • 修复指定 onlyStaged 参数,当获取列表为空时会识别为全量校验的问题 (19821b4)

2.2.0 (2023-01-18)

Features

  • 新增 onlyStaged 参数,用于仅检测添加到缓冲区的文件,支持 git 部分提交模式 (3e3d655)

2.1.7 (2023-01-03)

Bug Fixes

  • 修复 ts-check 不会从白名单移除已修复文件的问题 (308890e)

2.1.6 (2022-12-30)

Bug Fixes

  • 更正 ts-check 通过数量错误的问题 (6c0c809)

2.1.5 (2022-12-10)

Bug Fixes

  • 更新日志有效天数参数的支持 (2b123e4)
  • prettier 执行 fixed 文件应同时更新最新的 md5 值 (37c6d3b)

2.1.4 (2022-11-28)

Bug Fixes

  • 修复 extensions 参数不规范导致 onlyChanges 匹配文件结果异常的问题 (3b35fbf)

2.1.3 (2022-11-28)

Bug Fixes

  • 修复 jira check 失败时仍会通过的问题 (f04f6c0)

2.1.2 (2022-11-25)

2.1.1 (2022-11-16)

2.1.0 (2022-11-14)

Features

  • 新增 stat 源码文件统计功能 (f49d050)

2.0.4 (2022-11-02)

2.0.3 (2022-10-31)

Bug Fixes

  • 修复 jest 单测读取 cache 字段错误的问题 (3a089b1)

2.0.2 (2022-10-28)

Bug Fixes

  • 修复 jest 执行结果不会更新白名单的问题;统一文件列表打印的格式 (c2a8bd1)
  • 修正 cli toWhiteList 参数失效问题 (7797140)

2.0.1 (2022-09-14)

Bug Fixes

  • 修复 prettier cache 匹配未生效的问题 (fab940b)
  • 修复命令行参数 ci 无效问题;优化 prettier check 逻辑 (eca85c6)
  • 修正 prettier cli 参数描述错误 (b0d7966)

2.0.0 (2022-09-08)

Bug Fixes

  • 更新 init 初始化配置逻辑 (75dd9ea)
  • 添加 husky tpl 文件 (c098072)
  • 修复 eslint check 未过滤无后缀文件导致的异常 (0183316)
  • 修复 eslint check 未过滤无后缀文件导致的异常 (6951ea7)
  • 修复 mode 参数默认值覆盖的优先级问题 (994388e)

1.12.4 (2022-08-22)

Bug Fixes

  • 修复 jira 未登录成功时 logger 异常的问题 (ee83568)
  • 修复 jira commit 输入内容符合要求的格式时无法提交的问题 (c958e50)
  • 修复 onlyChanges 包含已删除文件,导致 prettier 异常的问题 (4d9980d)
  • 修复自动从白名单移除无异常文件失效的问题 (cdf6007)

1.12.3 (2022-08-10)

Bug Fixes

  • 优化 tscheck 打印异常文件列表的数据统计 (df40190)

1.12.2 (2022-08-10)

Bug Fixes

  • 修复 tscheck 处理 printDetialOnSuccessed 参数逻辑错误的问题 (dee9c4d)

1.12.1 (2022-08-09)

1.12.0 (2022-08-02)

Features

  • 扩展 flh init 命令,增加 eslint、jest、prettier、tsconfig、stylelint、vscode、editorconfig、husky 等的配置初始化支持 (9742526)
  • 新增 git commit lint 对提交者邮件规范的验证 (5697e1e)
  • 新增 printDetialOnSuccessed 参数,可配置 ci 中执行成功时,是否需要打印异常详情(白名单中的异常) (2739297)

Bug Fixes

  • 修复 jira 获取信息失败时会抛异常的问题 (b621c13)
  • 修复 jira-check 当未匹配到 issues prefix 时提示信息包含 undefined 的问题 (0d84dfb)
  • jira commit lint 默认禁止子包检测与执行; 新增 ignoreVersion 参数,允许配置忽略 jira 版本匹配检测约束 (e7a0429)

1.11.1 (2022-07-21)

Bug Fixes

  • 修复 override config 导致的配置参数初始化 (583c5b1)

1.11.0 (2022-07-21)

Features

  • 新增支持 menorepo 类多子包项目 (b1eb053)

Bug Fixes

  • fix error when fileList is undefined (899d6f1)
  • prettier 应使用 editorconfig 配置 (812f9f2)

1.10.3 (2022-07-12)

Bug Fixes

  • 修复 noFiles 的判断逻辑 (8023411)

1.10.2 (2022-07-08)

Bug Fixes

  • 修正 jest 在 only-changes 模式下不生效问题 (c602696)

1.10.1 (2022-07-08)

Bug Fixes

  • fix for only-changes mode (cacc3f8)

1.10.0 (2022-07-08)

Features

  • 新增 prettier check 功能 (71975f8)

1.9.2 (2022-07-05)

Bug Fixes

  • rmdir 命令删除不存在的文件时不应抛异常 (8c5f002)

1.9.1 (2022-07-01)

Bug Fixes

  • 修复 request 方法 url 包含端口号时请求异常问题 (33a0696)

1.9.0 (2022-06-30)

Features

  • 新增 beforeExitOnError 参数,用于自定义异常退出前执行的方法 (27ca89f)

Bug Fixes

  • 修复使用 fast-glob 后 rm 命令删除失效问题 (cea0496)

1.8.3 (2022-06-28)

Bug Fixes

  • 修复 tscheck 白名单移除逻辑与本地缓存匹配异常的问题 (1839488)

1.8.2 (2022-06-24)

1.8.1 (2022-06-23)

1.8.0 (2022-06-09)

Features

  • 增加 simpleAssgin 工具方法 (2766027)

Bug Fixes

  • 更新 utils date 单元测试用例 (5b3e74c)
  • 更新日志写文件逻辑;修正 assgin 的逻辑错误 (0c4fee4)
  • fix for ts error (71b9405)
  • fix for ts error (5f37bba)
  • fix for ts error (fc90e23)

1.7.0 (2022-05-17)

Features

  • 新增辅助工具 pmcheck 用于包管理工具检测与约束 (76a1fdd)

1.6.6 (2022-05-12)

Bug Fixes

  • 修正 eslint-check 过滤 ignore 文件逻辑失效问题 (616db60)

1.6.5 (2022-05-09)

Bug Fixes

  • fix for husky install scripts (bf0ab94)

1.6.3 (2022-05-09)

Bug Fixes

  • 修复 only-changes 参数获取为空时返回文件列表包含空字符串的问题 (9ad40e7)

1.6.2 (2022-05-05)

1.6.1 (2022-05-05)

Bug Fixes

  • 修正 types 目录输出配置错误;增加 fix 参数,支持 cli 指定是否执行 eslint fix (3fdb489)

1.6.0 (2022-05-04)

Features

  • 从白名单中移除本次检测无异常的文件并写回白名单文件中 (118dcbc)
  • 新增 jest 单元测试的 lint 约束支持 (dc61f45)
  • 新增 jira issue 关联检查支持 (6d90eca)
  • 新增遵循 Angular git commit style 的 commitlint 支持 (a0c17e6)
  • 增加 cli 命令行工具 (310e060)
  • 增加可配置 lint 失败使用企业微信机器人通知支持 (23ecae1)
  • 增加企业微信通知基础支持 (d65abe1)
  • cli 增加 only-changes 参数,支持仅检查 git 仓库最近一次变更的文件 (4fb03b5)
  • jira-check 增加 allowedFixVersions 配置参数,允许自定义跳过版本检查的版本号 (af4221e)

Bug Fixes

  • [jira-check]修正从分支名提取 sprint 主版本的规则逻辑 (f786418)
  • 修复 cli 命令执行时默认参数值优先级高于配置文件的问题 (a5d6e42)
  • 修复 jira-check 获取修复版本为空时直接抛异常的问题 (f1b6311)
  • 修复 jira-check commit-msg 检测失败退出码仍为 0 的问题 (9f103e1)
  • 修复 silent 参数无效的问题 (4e8b238)
  • 修复配置信息二次初始化入参被忽略的问题 (ace3fd5)
  • 修复在子进程中执行失败不会退出的问题 (8fb45ff)
  • 修正 eslint 缓存文件名与 tscheck 相同的问题 (3fa6d7a)
  • 修正 eslint-check 对非 js、ts 类文件的过滤无效问题 (166911d)
  • 修正 jira 信息获取失败默认返回为 true 的问题 (4f20108)
  • 修正 jira-check 获取 issueType desc 时替换非英文字符的正则规则;jest 执行返回值类型优化 (a4d0b22)
  • 修正 jira-check pipeline 循环处理逻辑的异常返回 (91f1ca5)
  • 修正 ts-check 对诊断类型的次数统计方式 (f74c85d)
  • 修正 tscheck 白名单中的异常文件计数取值错误 (b9c0a1f)
  • 修正更新 commander 后 cli 参数默认值错误 (cf3d591)
  • 增加对 jira-check 请求 jira 信息的异常处理 (7254ac8)
  • cli 工具 cache 参数默认值修改为 false (a6530b4)
  • eslint/tscheck白名单变更后执行 git add 命令以更新git暂存区 (c484b39)
  • eslint/tscheck白名单变更后执行 git add 命令以更新git暂存区 (a3b4117)
  • fix lint error (a014dea)
  • trim for commit-msg (3cc6bf3)
  • tscheck 过滤间接依赖文件逻辑前置 (e10dc97)
  • tscheck 检测结果列表应过滤间接依赖的文件 (ef9884d)
  • tscheck 使用 minimatch 过滤 glob 规则应使用文件相对路径 (9249e88)

1.5.1 (2022-03-10)

Bug Fixes

  • 修正更新 commander 后 cli 参数默认值错误 (cf3d591)

1.5.0 (2022-03-08)

Features

  • 新增遵循 Angular git commit style 的 commitlint 支持 (a0c17e6)

Bug Fixes

1.4.13 (2021-12-28)

Bug Fixes

  • 修正 eslint 缓存文件名与 tscheck 相同的问题 (3fa6d7a)
  • tscheck 过滤间接依赖文件逻辑前置 (e10dc97)
  • tscheck 使用 minimatch 过滤 glob 规则应使用文件相对路径 (9249e88)

1.4.12 (2021-12-27)

Bug Fixes

  • tscheck 检测结果列表应过滤间接依赖的文件 (ef9884d)

1.4.11 (2021-12-15)

Bug Fixes

  • 修复配置信息二次初始化入参被忽略的问题 (ace3fd5)

1.4.10 (2021-12-10)

Bug Fixes

  • 修正 jira-check pipeline 循环处理逻辑的异常返回 (91f1ca5)

1.4.9 (2021-12-08)

Bug Fixes

  • 修复 jira-check 获取修复版本为空时直接抛异常的问题 (f1b6311)
  • 修正 jira-check 获取 issueType desc 时替换非英文字符的正则规则;jest 执行返回值类型优化 (a4d0b22)

1.4.8 (2021-12-02)

Bug Fixes

  • 修复在子进程中执行失败不会退出的问题 (8fb45ff)

1.4.7 (2021-12-01)

Bug Fixes

  • 修复 cli 命令执行时默认参数值优先级高于配置文件的问题 (a5d6e42)

1.4.6 (2021-11-30)

Bug Fixes

  • 修正 jira 信息获取失败默认返回为 true 的问题 (4f20108)

1.4.5 (2021-11-25)

Bug Fixes

  • 修复 jira-check commit-msg 检测失败退出码仍为 0 的问题 (9f103e1)
  • 增加对 jira-check 请求 jira 信息的异常处理 (7254ac8)

1.4.4 (2021-11-22)

Bug Fixes

  • [jira-check]修正从分支名提取 sprint 主版本的规则逻辑 (f786418)
  • cli 工具 cache 参数默认值修改为 false (a6530b4)

1.4.3 (2021-11-19)

Bug Fixes

  • 修复 silent 参数无效的问题 (4e8b238)
  • 修正 eslint-check 对非 js、ts 类文件的过滤无效问题 (166911d)

1.4.1 (2021-11-18)

1.4.0 (2021-11-15)

Features

  • 新增 jira issue 关联检查支持 (6d90eca)
  • cli 增加 only-changes 参数,支持仅检查 git 仓库最近一次变更的文件 (4fb03b5)

Bug Fixes

  • 修正 tscheck 白名单中的异常文件计数取值错误 (b9c0a1f)
  • eslint/tscheck白名单变更后执行 git add 命令以更新git暂存区 (c484b39)
  • eslint/tscheck白名单变更后执行 git add 命令以更新git暂存区 (a3b4117)
  • fix lint error (a014dea)

1.3.0 (2021-10-26)

Features

  • 从白名单中移除本次检测无异常的文件并写回白名单文件中 (118dcbc)

1.2.0 (2021-09-30)

Features

  • 新增 jest 单元测试的 lint 约束支持 (dc61f45)
  • 增加 cli 命令行工具 (310e060)

Bug Fixes

  • 修正 ts-check 对诊断类型的次数统计方式 (f74c85d)

1.1.0 (2021-08-25)

Features

  • 增加使用多线程、多进程执行检测模式 (c382c34)
  • eslintCheck 增加 rules 异常类型数量统计信息,并忽略 ignore 文件的警告报错 (ebd7334)

Bug Fixes

  • 修正 tsCheck 缓存写入逻辑失效的问题 (4b86e40)
  • ts-check 默认使用 proc 子进程模式执行 (d9fa7d3)
  • tsCheck 打印异常详情时,仅打印匹配文件的异常 (78d378e)