1 介绍
(注:本小节的内容基本上都来自官方文档的翻译和总结)
-
简介
- ls-lint 官方文档 :
An extremely fast file and directory name linter. (一个极快的文件和目录名称 linter)。 ls-lint提供了简单且快速的方式,来为你的项目目录和文件名提供极快的命名规则约束。
- ls-lint 官方文档 :
-
key facts
- 最小化的安装,只需要一个配置文件 (
.ls-lint.yml/.ls-lint.yaml) 来编写简单的规则即可 - 检测的目标是目录名和文件名。支持任意扩展名的文件,支持任意
unicode字符。 Incredibly fast (难以置信地快):检测上千个文件和目录只需要毫秒级的时间。- 目前已被众多大型项目采用,如 Nuxt.js , Terser, Renovate 等
- 几乎零第三方依赖。仅有 go-yaml 和 doublestar 两个依赖
- 支持众多平台,包括 Linux、MacOS、Windows 三大操作系统,并提供了 NPM 包,还可在 docker 中使用
- 最小化的安装,只需要一个配置文件 (
2 安装
-
你可以全局安装,也可以在项目中独立安装
# 全局安装 npm install -g @ls-lint/ls-lint yarn add -g @ls-lint/ls-lint pnpm install -g @ls-lint/ls-lint # 项目内安装 npm install @ls-lint/ls-lint yarn add @ls-lint/ls-lint pnpm install @ls-lint/ls-lint -
运行 ls-lint
ls-lint # 全局命令 npx @ls-lint/ls-lint # npx 执行 pnpx @ls-lint/ls-lint # pnpx 执行npm@9和pnpm@7执行这个命令的方式与 npx 和 pnpx 的执行方式不同,详情查阅npm-exec和pnpm exec
3 配置
3.1 基础概念
-
在项目的根目录下创建
.ls-lint.yml文件,这个文件就是ls-lint的配置文件了,ls-lint所有的配置都在这一个文件里编写 -
规则
-
key 为文件扩展名或子文件扩展名,如
.js,.d.ts等- 特殊的一个 key:
.dir。这个 key 表示目录的命名规则
- 特殊的一个 key:
-
value 为规则,如
camelCase,PascalCase,kebab-case等,支持正则表达式# example ls: .js: PascalCase
-
-
ls-lint配置项分为两个块:ls:这个块里定义了所有需要格式化的文件和目录的规则ignore:这个块里定义了被忽略的文件和目录
-
ls块- 该块下可以有任意个子块,每一个子块就是一个文件夹路径
- 子块名称支持
glob匹配 - 该块下可以有任意条规则,这些规则对所有未忽略的目录下的文件有效
-
ignore块-
该块下不支持子块
-
该块下只需列出需要忽略的文件和文件夹即可
ignore: - .git - node_modules
-
3.2 配置规则
-
官方文档中提供了下面这个表格,来解释
ls-lint支持的检测规则配置规则 别名 描述 允许的字符 regex 无 名称必须符合指定的正则表达式 满足正则表达式的字符 lowercase 无 名称里的字母必须全是小写 字母、非字母字符 camelcase camelCase 名称必须是 camelCase 风格 字母、数字 pascalcase PascalCase 名称必须是 PascalCase 风格 字母、数字 snakecase snake_case 名称必须是 snake_case 风格 小写字母、数字、下划线(_) screamingsnakecase SCREAMING_SNAKE_CASE 名称必须是 snake_case 的全大写风格 大写字母、数字、下划线(_) kebabcase kebab-case 名称必须是 kebab-case 风格 小写字母、数字、中划线(-) pointcase point.case 名称必须是 point.case 风格 小写字母、数字、点(.) - 这些规则里最常用的是
camelCase,PascalCase,snake_case和kebab-case - 在
NestJS项目里,point.case也比较常用
- 这些规则里最常用的是
-
为指定文件配置多个规则
-
可以通过
|连接多个规则,来允许为同一类/个文件/文件夹指定允许的多个规则- 例如:
.js: camelCase | kebab-case
- 例如:
-
3.3 CLI 选项
-
--debug- 将 debug 信息打印到命令行窗口,主要包括检测的、跳过的文件和文件夹
-
--warn- 将检测结果的
errors视为warnings,将结果打印到命令行窗口,并且最终一定成功退出
- 将检测结果的
1.3.4 我的配置
- 我的项目是一个普通的前端 Vue3 项目,个人比较喜欢的配置如下
ls:
.js: kebab-case
.ts: kebab-case
.json: kebab-case
.vue: PascalCase
.tsx: PascalCase
.d.ts: kebab-case
# 根据情况加入其它的配置项
ignore:
- .git
- node_modules
# 可以加入其它需要忽略的文件夹和文件
- 个人不建议为一个类型的文件指定多种风格的规则,这样不方便统一
4 使用
-
通常,
ls-lint不会单独去使用,而是配合其它的工具一起使用,比如lint-staged -
按照前面的步骤为项目安装好了
ls-lint之后,就可以配合lint-staged使用了,只需要在package.json中加入下面的配置就可以了{ "lint-staged": { "*.{js,jsx,ts,tsx,vue}": ["ls-lint", "eslint --fix" ], "*.{css,less,scss,vue}": ["ls-lint", "stylelint --fix"] } }
推荐将
ls-lint命令放到最前面执行,因为这个命令执行特别快,比eslint等命令执行得快得多。
将这个命令放到最前面,能尽可能减少代码提交时规范化检测的时间。