{"_id":"l-fe-lint","name":"l-fe-lint","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"l-fe-lint","version":"1.0.0","description":"前端编码规范工程化标准脚手架","bin":{"l-fe-lint":"lib/cli.js"},"main":"./lib/index.js","scripts":{"dev":"npm run copyfiles && tsc -w","build":"rm -rf lib && npm run copyfiles && tsc","copyfiles":"copyfiles -a -u 1 \"src/config/**\" lib","test":"npm run build && jest","coverage":"nyc jest --silent --forceExit","prepublishOnly":"npm run test"},"engines":{"node":"^12.22.0 || ^14.17.0 || >=16.0.0"},"keywords":["lint","cli"],"devDependencies":{"@types/command-exists":"^1.2.0","@types/cross-spawn":"^6.0.2","@types/ejs":"^3.1.0","@types/eslint":"^8.4.1","@types/fs-extra":"^9.0.13","@types/glob":"^7.2.0","@types/lodash":"^4.14.180","@types/node":"^14.14.11","@types/prettier":"^2.4.4","@types/stylelint":"^14.0.0","@types/text-table":"^0.2.2","copyfiles":"^2.4.1","jest":"^27.5.1","nyc":"^15.1.0","typescript":"^4.6.2"},"dependencies":{"@babel/core":"^7.16.0","@babel/eslint-parser":"^7.16.3","@babel/preset-react":"^7.16.0","@commitlint/cli":"^16.0.0","@typescript-eslint/eslint-plugin":"^5.0.0","@typescript-eslint/parser":"^5.0.0","chalk":"^4.1.0","command-exists":"^1.2.9","commander":"^6.2.1","cross-spawn":"^7.0.3","ejs":"^3.1.5","eslint":"^8.7.0","eslint-config-egg":"^10.0.0","eslint-config-prettier":"^8.3.0","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.22.1","eslint-plugin-jsx-a11y":"^6.4.1","eslint-plugin-prettier":"^4.0.0","eslint-plugin-react":"^7.21.5","eslint-plugin-react-hooks":"^4.2.0","eslint-plugin-vue":"^7.3.0","execa":"^5.0.0","fast-glob":"^3.2.11","fs-extra":"^9.0.1","glob":"^7.1.6","husky":"^3.1.0","inquirer":"^7.3.3","is-docker":"^2.1.1","l-fe-commitlint-config":"^1.0.0","l-fe-eslint-config":"^1.0.0","l-fe-markdownlint-config":"^1.0.0","l-fe-stylelint-config":"^1.0.0","lodash":"^4.17.20","markdownlint":"^0.25.1","markdownlint-rule-helpers":"^0.13.0","ora":"^5.1.0","prettier":"^2.2.1","strip-ansi":"^6.0.0","stylelint":"^14.3.0","stylelint-scss":"^4.1.0","terminal-link":"^2.1.1","text-table":"^0.2.0","vue-eslint-parser":"^7.3.0"},"author":{"name":"l"},"homepage":"https://github.com/li-ang-Z/l-fe-spec#readme","license":"ISC","repository":{"type":"git","url":"git+https://github.com/li-ang-Z/l-fe-spec.git"},"bugs":{"url":"https://github.com/li-ang-Z/l-fe-spec/issues"},"gitHead":"d59b3e3c847f6da85dd3534f5a86399e5c8849f4","types":"./lib/index.d.ts","_id":"l-fe-lint@1.0.0","_nodeVersion":"16.20.2","_npmVersion":"lerna/6.6.2/node@v16.20.2+x64 (win32)","dist":{"integrity":"sha512-jsurEodh6fAN0bF3qcge0ogH7dEhMOhdWvUEx30qyisn+ogthmA3hmBjfzHmY774v/ywS+2+aJYSSjrfX26HSg==","shasum":"60666d841fde0dda09307b19ebbd76307ae4afb6","tarball":"https://registry.npmjs.org/l-fe-lint/-/l-fe-lint-1.0.0.tgz","fileCount":76,"unpackedSize":142633,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDg/6txPSxD+nMSaVnj3/JmUchMqRIzqWVu8pWkRMFz1AiASWY5EqEvG1g9y/OkqIgvmWYmzhOTGR4NTfePUxY2gSQ=="}]},"_npmUser":{"name":"ye_feng","email":"704786716@qq.com"},"directories":{},"maintainers":[{"name":"ye_feng","email":"704786716@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/l-fe-lint_1.0.0_1783607627888_0.2079246891378279"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-09T14:33:47.820Z","1.0.0":"2026-07-09T14:33:48.030Z","modified":"2026-07-09T14:33:48.245Z"},"maintainers":[{"name":"ye_feng","email":"704786716@qq.com"}],"description":"前端编码规范工程化标准脚手架","homepage":"https://github.com/li-ang-Z/l-fe-spec#readme","keywords":["lint","cli"],"repository":{"type":"git","url":"git+https://github.com/li-ang-Z/l-fe-spec.git"},"author":{"name":"l"},"bugs":{"url":"https://github.com/li-ang-Z/l-fe-spec/issues"},"license":"ISC","readme":"# l-fe-lint\n\n`l-fe-lint` 是[前端编码规范工程化](https://lliang.github.io/l-fe-spec/)的配套 Lint 工具，可以为项目一键接入规范、一键扫描和修复规范问题，保障项目的编码规范和代码质量。\n\n## 背景\n\n我们引入了多个业界流行的 Linter，并根据规范内容定制了规则包，它们包括：\n\n| 规范                                                              | Lint 工具                                                  | npm 包                                                                                       |\n| ----------------------------------------------------------------- | ---------------------------------------------------------- | -------------------------------------------------------------------------------------------- |\n| JavaScript 编码规范 <br/> TypeScript 编码规范 <br/> Node 编码规范 | [ESLint](https://eslint.org/)                              | [l-fe-eslint-config](https://www.npmjs.com/package/l-fe-eslint-config)             |\n| CSS 编码规范                                                      | [stylelint](https://stylelint.io/)                         | [l-fe-stylelint-config](https://www.npmjs.com/package/l-fe-stylelint-config)       |\n| Git 规范                                                          | [commitlint](https://commitlint.js.org/#/)                 | [l-fe-commitlint-config](https://www.npmjs.com/package/l-fe-commitlint-config)     |\n| 文档规范                                                          | [markdownlint](https://github.com/DavidAnson/markdownlint) | [l-fe-markdownlint-config](https://www.npmjs.com/package/l-fe-markdownlint-config) |\n\n可以看到这些 `Linter` 和规则包众多且零散，全部安装它们会给项目增加十几个依赖，接入和升级成本都比较高。\n\n`l-fe-lint` 收敛屏蔽了这些依赖和配置细节，提供简单的 CLI 和 Node.js API，让项目能够一键接入、一键扫描、一键修复、一键升级，并为项目配置 git commit 卡口，降低项目接入规范的成本。\n\n## CLI 使用\n\n### 安装\n\n在终端执行：\n\n```bash\nnpm install l-fe-lint -g\n```\n\n安装完成后，可执行 `l-fe-lint -h` 以验证安装成功。\n\n### 使用\n\n#### `l-fe-lint init`：一键接入\n\n在项目根目录执行 `l-fe-lint init`，即可一键接入规范，为项目安装规范 `Lint` 所需的依赖和配置。\n\n具体会做以下事情：\n\n- 安装各种依赖：包括 `Linter` 依赖，如 [ESLint](https://eslint.org/)、[stylelint](https://stylelint.io/)、[commitlint](https://commitlint.js.org/#/)、[markdownlint](https://github.com/DavidAnson/markdownlint) 等；配置依赖，如 [l-fe-eslint-config](https://www.npmjs.com/package/l-fe-eslint-config)、[l-fe-stylelint-config](https://www.npmjs.com/package/l-fe-stylelint-config)、[l-fe-commitlint-config](https://www.npmjs.com/package/l-fe-commitlint-config)、[l-fe-markdownlint-config](https://www.npmjs.com/package/l-fe-markdownlint-config) 等\n- 写入各种配置文件，包括：\n  - `.eslintrc.js`、`.eslintignore`：ESLint 配置（继承 `l-fe-eslint-config`）及黑名单文件\n  - `.stylelintrc.js`、`.stylelintignore`：stylelint 配置（继承 `l-fe-stylelint-config`）及黑名单文件\n  - `commitlint.config.js`：commitlint 配置（继承 `l-fe-commitlint-config`）\n  - `.markdownlint.json`、`.markdownlintignore`：`markdownlint` 配置及黑名单文件\n  - `.prettierrc.js`：符合规范的 [Prettier 配置](https://prettier.io/docs/en/configuration.html)\n  - `.editorconfig`：符合规范的 [editorconfig](https://editorconfig.org/)\n  - `.vscode/extensions.json`：写入规范相关的 [VSCode 插件推荐](https://code.visualstudio.com/docs/editor/extension-gallery#_workspace-recommended-extensions)，包括 `ESLint`、`stylelint`、`markdownlint`、`prettier` 等\n  - `.vscode/settings.json`：写入规范相关的 [VSCode 设置](https://code.visualstudio.com/docs/getstarted/settings#_settings-file-locations)，设置 `ESLint` 和 `stylelint` 插件的 `validate` 及**保存时自动运行 fix**，如果选择使用 `Prettier`，会同时将 `prettier-vscode` 插件设置为各前端语言的 defaultFormatter，并配置**保存时自动格式化**\n  - `l-fe-lint.config.js`l-fe-lint 包的一些配置，如启用的功能等\n- 配置 git commit 卡口：使用 [husky](https://www.npmjs.com/package/husky) 设置代码提交卡口，在 git commit 时会运行 `l-fe-lint commit-file-scan` 和 `l-fe-lint commit-msg-scan` 分别对提交文件和提交信息进行规范检查。`l-fe-lint commit-file-scan` 默认仅对 error 问题卡口，如果你想对 warn 问题也卡口，可以增加 `--strict` 参数以开启严格模式\n\n> 注 1：如果项目已经配置过 ESLint、stylelint 等 Linter，执行 `l-fe-lint init` 将会提示存在冲突的依赖和配置，并在得到确认后进行覆盖：\n>\n> 注 2：如果项目的 .vscode/ 目录被 .gitignore 忽略，可以在拉取项目后单独执行 `l-fe-lint init --vscode` 命令写入 `.vscode/extensions.json` 和 `.vscode/settings.json` 配置文件\n\n#### `l-fe-lint scan`：一键扫描\n\n在项目的根目录执行命令，即可扫描项目的规范问题：\n\n支持下列参数：\n\n- `-q` `--quiet` 仅报告 error 级别的问题\n- `-o` `--output-report` 输出扫描出的规范问题日志\n- `-i` `--include <dirpath>` 指定要进行规范扫描的目录\n- `--no-ignore` 忽略 eslint 的 ignore 配置文件和 ignore 规则\n\n> 注 1：事实上，你可以在任意目录执行 `l-fe-lint scan` `l-fe-lint` 会根据文件类型、JSON 等特征嗅探项目类型。但我们还是推荐在执行过 `l-fe-lint init` 的项目根目录执行 `l-fe-lint scan`，以得到最准确的扫描结果。\n>\n> 注 2: `l-fe-lint` 会根据项目内有无 eslint 和 stylelint 配置文件判断使用项目的配置文件还是 `l-fe-lint` 默认配置进行扫描。若使用项目的，在未安装依赖时会帮其安装（执行 npm i）。若使用项目配置扫描失败，则使用默认配置扫描\n\n#### `l-fe-lint fix`：一键修复\n\n在项目的根目录执行命令，即可修复部分规范问题：\n\n支持下列参数：\n\n- `-i` `--include <dirpath>` 指定要进行修复扫描的目录\n- `--no-ignore` 忽略 eslint 的 ignore 配置文件和 ignore 规则\n\n注意请 review 下修复前后的代码，以免工具误修的情况。\n\n#### `l-fe-lint commit-file-scan` 提交文件扫描\n\n在 git commit 时对提交文件进行规范问题扫描，需配合 git 的 pre-commit 钩子使用。\n\n支持下列参数：\n\n- `-s` `--strict` 严格模式，对 warn 和 error 问题都卡口，默认仅对 error 问题卡口\n\n#### `l-fe-lint commit-msg-scan` 提交信息扫描\n\ngit commit 时对 commit message 的格式进行扫描（使用 commitlint），需配合 [husky](https://www.npmjs.com/package/husky) 的 commit-msg 钩子使用。\n\n## Node.js API 使用\n\n### 安装\n\n```bash\nnpm install l-fe-lint --save\n```\n\n### API\n\n#### init：初始化\n\n- l-fe-lint.init(config)：将项目一键接入规范，效果等同于 `l-fe-lint init`\n\n示例：\n\n```js\n(await l) -\n  fe -\n  lint.init({\n    eslintType: 'react',\n    enableESLint: true,\n    enableStylelint: true,\n    enableMarkdownlint: true,\n    enablePrettier: true,\n    disableNpmInstall: false,\n  });\n```\n\nconfig 参数如下：\n\n| 参数               | 类型       | 默认值 | 说明                                                                                                                |\n| ------------------ | ---------- | ------ | ------------------------------------------------------------------------------------------------------------------- |\n| cwd                | string     | -      | 项目绝对路径                                                                                                        |\n| eslintType         | ESLintType | -      | 语言和框架类型，如果不配置，等同于 l-fe-lint init，控制台会出现选择器，如果配置，控制台就不会出现选择器        |\n| enableESLint       | boolean    | true   | 是否启用 ESLint，如果不配置默认值为 true，即默认启用 ESLint                                                         |\n| enableStylelint    | boolean    | -      | 是否启用 stylelint，如果不配置，等同于 l-fe-lint init，控制台会出现选择器，如果配置，控制台就不会出现选择器    |\n| enableMarkdownlint | boolean    | -      | 是否启用 markdownlint，如果不配置，等同于 l-fe-lint init，控制台会出现选择器，如果配置，控制台就不会出现选择器 |\n| enablePrettier     | boolean    | -      | 是否启用 Prettier                                                                                                   |\n| disableNpmInstall  | boolean    | false  | 是否禁用自动在初始化完成后安装依赖                                                                                  |\n\n##### ESLintType\n\n- `default`: JavaScript 项目（未使用 React 和 Vue 的 JS 项目）\n- `react`: JavaScript + React 项目\n- `vue`: JavaScript + Vue 项目\n- `typescript/default`: TypeScript 项目（未使用 React 和 Vue 的 TS 项目）\n- `typescript/react`: TypeScript + React 项目\n- `typescript/vue`: TypeScript + Vue 项目\n- `es5`: ES5 及之前版本的 JavaScript 老项目\n\n## 配置\n\n`l-fe-lint` 基于一份配置进行扫描（但你也可以零配置使用），支持的配置参数有：\n\n| 参数                | 类型                    | 默认值 | 说明                                                                                           |\n| ------------------- | ----------------------- | ------ | ---------------------------------------------------------------------------------------------- |\n| enableESLint        | boolean                 | true   | 是否启用 ESLint                                                                                |\n| enableStylelint     | boolean                 | true   | 是否启用 stylelint                                                                             |\n| enableMarkdownlint  | boolean                 | true   | 是否启用 markdownlint                                                                          |\n| enablePrettier      | boolean                 | -      | 是否启用 Prettier                                                                              |\n| eslintOptions       | ESLint.Options          | -      | ESLint 配置项，若未设置将使用执行目录下或内置的默认 eslintrc 和 eslintignore 进行扫描          |\n| stylelintOptions    | stylelint.LinterOptions | -      | stylelint 配置项，若未设置将使用执行目录下或内置的默认 stylelintrc 和 stylelintignore 进行扫描 |\n| markdownlintOptions | markdownlint.Options    | -      | markdownlint 配置项，若未设置将使用执行目录下或内置的默认 markdownlint 配置文件进行扫描        |\n\n`l-fe-lint` 会读取执行目录下的 `l-fe-lint.config.js` 作为配置文件。`l-fe-lint init` 会在执行目录下新增如下的 `l-fe-lint.config.js` 文件：\n\n```js\nmodule.exports = {\n  enableESLint: true,\n  enableStylelint: true,\n  enableMarkdownlint: true,\n  enablePrettier: true,\n};\n```\n\n## 常见问题\n\n### TypeScript 项目扫描性能问题\n\n如果你的 TS 项目 commit 卡口和 `l-fe-lint scan` 运行时间很长，可以通过如下在 `.eslintrc.js` 中增加以下配置提升性能：\n\n```js\nmodule.exports = {\n  parserOptions: {\n    project: [], // for lint performance\n    createDefaultProgram: false, // for lint performance\n  },\n  rules: {\n    '@typescript-eslint/dot-notation': 0, // for lint performance\n    '@typescript-eslint/restrict-plus-operands': 0, // for lint performance\n  },\n};\n```\n","readmeFilename":"README.md","_rev":"1-14fa63976a80a674727020bf465867aa"}