2.0.0 • Published 6 months ago

@d-lint/filenamelint v2.0.0

Weekly downloads
-
License
ISC
Repository
-
Last release
6 months ago

@d-lint/filenamelint

文件名lint工具:

  • 支持常见命名规则
  • 支持自定义正则表达式
  • 支持不同文件夹设置不同文件名

配置

以如下目录结构的配置为例,说明下配置规则:

- src:
    - business:
        handler.ts
        map-logo.png
    - ui:
        - components:
            - Panel
                - PanelItem.tsx
                - PanelItem.scss
            index.ts
        - business:
            - DialogPanel
                - PanelItem.tsx
                - PanelItem.scss
        - hooks:
            usePanel.ts
    - utils:
        getform.ts
        request.ts
        index.ts

配置规则定义如下:

const whitelist = [/^index/];
module.exports = {
    regexp: 'snakeCase',
    root: 'src',
    directories: {
        business: {
            regexp: {
                '.ts': 'snakeCase',
                '.png': 'kebabCase',
                '*': 'snakeCase',
            },
            whitelist,
        },
        ui: {
            directories: {
                components: {
                    regexp: {
                        '.tsx': 'pascalCase',
                        '.scss': 'pascalCase',
                        '*': 'snakeCase',
                    },
                    whitelist,
                },
                business: {
                    regexp: {
                        '.tsx': 'pascalCase',
                        '.scss': 'pascalCase',
                        '*': 'snakeCase',
                    },
                    whitelist,
                },
                hooks: {
                    regexp: 'camelCase',
                    whitelist,
                },
            },
        },
        utils: {
            regexp: /^[a-z]+$/
        }
    },
};
  1. root表示根目录所在位置,同层级的regexp表示全局匹配的类型
  2. directories表示子目录匹配规则
  3. regexp
    • 对象形式,对于每一种扩展名的文件匹配规则;
    • 字符串形式,使用预定义规则;
    • 正则表达式形式,自定义匹配规则
  4. whitelist表示白名单规则,需用正则表达式

使用

结合lint-staged可以在代码提交的时候拦截文件名,进行检查报错

package.json

{
  "name": "filenamelint demo",
  "version": "0.0.1",
  "description": "filenamelint's demo",
  "main": "index.ts",
  "repository": "git@git.xiaojukeji.com:dipper/kunyu.git",
  "author": "",
  "license": "MIT",
  "scripts": {
  },
  "lint-staged": {
    "*": "filenamelint -c ./filenamelint.config.js"
  },
  "sideEffects": true,
  "devDependencies": {
    "lint-staged": "^12.1.2",
  },
  "dependencies": {
  }
}
2.0.0

6 months ago

1.0.1

6 months ago

1.0.0

6 months ago