news 2026/5/1 4:18:54

Eleventy终极代码质量工具链:ESLint、Prettier与Git Hooks完整配置指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Eleventy终极代码质量工具链:ESLint、Prettier与Git Hooks完整配置指南

Eleventy终极代码质量工具链:ESLint、Prettier与Git Hooks完整配置指南

【免费下载链接】eleventyA simpler site generator. Transforms a directory of templates (of varying types) into HTML.项目地址: https://gitcode.com/gh_mirrors/el/eleventy

Eleventy作为一款简单高效的静态站点生成器,能够将各种模板文件转换为HTML网页。为了确保项目代码的高质量和一致性,配置完善的代码质量工具链至关重要。本文将详细介绍如何为Eleventy项目配置ESLint、Prettier与Git Hooks工具链,帮助开发者轻松实现代码规范检查、自动格式化和提交前验证。

为什么需要代码质量工具链?

在多人协作或大型项目中,代码风格不一致、潜在的语法错误和不规范的提交信息等问题会严重影响开发效率和代码可维护性。通过集成ESLint、Prettier和Git Hooks,我们可以:

  • 自动检测代码错误:ESLint能够在开发过程中实时发现并提示语法错误、潜在的逻辑问题和不符合编码规范的代码。
  • 统一代码风格:Prettier可以自动格式化代码,确保团队成员使用一致的代码风格,减少因格式问题引起的不必要争论。
  • 规范提交信息:Git Hooks可以在代码提交前对提交信息进行验证,确保提交信息清晰、规范,便于后续代码审查和版本回溯。

图:代码质量工具链就像忠诚的守护者,默默守护着项目代码的质量

环境准备

在开始配置之前,请确保你的开发环境中已经安装了Node.js和npm。如果尚未安装,可以从Node.js官方网站下载并安装。

首先,克隆Eleventy项目仓库:

git clone https://gitcode.com/gh_mirrors/el/eleventy cd eleventy

然后,安装项目依赖:

npm install

ESLint配置

ESLint是一款强大的JavaScript代码检查工具,可以帮助我们发现代码中的问题并保持代码风格的一致性。

安装ESLint

在项目根目录下执行以下命令安装ESLint及其相关插件:

npm install eslint eslint-plugin-import eslint-plugin-node eslint-plugin-promise --save-dev

创建ESLint配置文件

在项目根目录下创建.eslintrc.js文件,并添加以下内容:

module.exports = { env: { browser: true, es2021: true, node: true }, extends: [ 'eslint:recommended', 'plugin:import/recommended', 'plugin:node/recommended', 'plugin:promise/recommended' ], parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, plugins: [ 'import', 'node', 'promise' ], rules: { 'indent': ['error', 2], 'linebreak-style': ['error', 'unix'], 'quotes': ['error', 'single'], 'semi': ['error', 'always'], 'no-console': 'warn', 'import/no-unresolved': 'error', 'node/exports-style': ['error', 'module.exports'], 'node/file-extension-in-import': ['error', 'always'], 'node/prefer-global/buffer': ['error', 'always'], 'node/prefer-global/console': ['error', 'always'], 'node/prefer-global/process': ['error', 'always'], 'node/prefer-global/url-search-params': ['error', 'always'], 'node/prefer-global/url': ['error', 'always'], 'node/prefer-promises/dns': 'error', 'node/prefer-promises/fs': 'error', 'promise/always-return': 'error', 'promise/no-return-wrap': 'error', 'promise/param-names': 'error', 'promise/catch-or-return': 'error', 'promise/no-native': 'off', 'promise/no-nesting': 'warn', 'promise/no-promise-in-callback': 'warn', 'promise/no-callback-in-promise': 'warn', 'promise/avoid-new': 'warn', 'promise/no-new-statics': 'error', 'promise/no-return-in-finally': 'warn', 'promise/valid-params': 'warn' } };

添加ESLint脚本

package.json文件中添加以下脚本:

"scripts": { "lint": "eslint .", "lint:fix": "eslint . --fix" }

现在,你可以通过运行npm run lint命令来检查代码中的问题,通过npm run lint:fix命令自动修复一些可修复的问题。

Prettier配置

Prettier是一款专注于代码格式化的工具,它可以自动调整代码的缩进、空格、换行等格式,确保代码风格的一致性。

安装Prettier

执行以下命令安装Prettier及其相关插件:

npm install prettier eslint-config-prettier eslint-plugin-prettier --save-dev

创建Prettier配置文件

在项目根目录下创建.prettierrc.js文件,并添加以下内容:

module.exports = { printWidth: 80, tabWidth: 2, useTabs: false, semi: true, singleQuote: true, quoteProps: 'as-needed', jsxSingleQuote: false, trailingComma: 'es5', bracketSpacing: true, jsxBracketSameLine: false, arrowParens: 'always', rangeStart: 0, rangeEnd: Infinity, requirePragma: false, insertPragma: false, proseWrap: 'preserve', htmlWhitespaceSensitivity: 'css', vueIndentScriptAndStyle: false, endOfLine: 'lf', embeddedLanguageFormatting: 'auto', singleAttributePerLine: false };

更新ESLint配置

为了避免ESLint和Prettier之间的规则冲突,需要更新.eslintrc.js文件,添加Prettier相关配置:

module.exports = { // ... 其他配置 extends: [ 'eslint:recommended', 'plugin:import/recommended', 'plugin:node/recommended', 'plugin:promise/recommended', 'plugin:prettier/recommended' // 添加此行 ], // ... 其他配置 };

添加Prettier脚本

package.json文件中添加以下脚本:

"scripts": { // ... 其他脚本 "format": "prettier --write ." }

现在,你可以通过运行npm run format命令来自动格式化项目中的所有文件。

Git Hooks配置

Git Hooks可以在代码提交、推送等操作前执行自定义脚本,帮助我们在代码提交前进行代码检查和格式化,确保提交的代码符合项目规范。

安装husky和lint-staged

执行以下命令安装husky和lint-staged:

npm install husky lint-staged --save-dev

配置husky

package.json文件中添加以下配置:

"husky": { "hooks": { "pre-commit": "lint-staged", "commit-msg": "node scripts/verify-commit-msg.js" } }, "lint-staged": { "*.{js,jsx,ts,tsx}": [ "eslint --fix", "prettier --write" ], "*.{json,md,yml}": [ "prettier --write" ] }

创建提交信息验证脚本

在项目根目录下创建scripts/verify-commit-msg.js文件,并添加以下内容:

const fs = require('fs'); const path = require('path'); const msgPath = path.resolve('.git/COMMIT_EDITMSG'); const msg = fs.readFileSync(msgPath, 'utf-8').trim(); const commitRE = /^(feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert)(\(.+\))?: .{1,50}/; if (!commitRE.test(msg)) { console.error('\n ERROR: commit message format is invalid!'); console.error(' Please follow the format: <type>(<scope>): <subject>'); console.error(' Type can be: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert'); process.exit(1); }

集成到开发流程

现在,我们已经完成了ESLint、Prettier和Git Hooks的配置。将这些工具集成到日常开发流程中,可以有效提高代码质量和开发效率。

开发过程中

在开发过程中,你可以使用编辑器的ESLint和Prettier插件,实时获取代码检查和格式化反馈。大多数主流编辑器(如VS Code、WebStorm等)都支持这些插件。

提交代码前

当你准备提交代码时,Git Hooks会自动执行以下操作:

  1. pre-commit钩子会运行lint-staged,对暂存区的文件进行ESLint检查和Prettier格式化。
  2. commit-msg钩子会验证提交信息是否符合规范。

如果检查或验证失败,提交将会被中止,你需要修复相关问题后重新提交。

持续集成

你还可以将这些工具集成到项目的持续集成流程中,确保每次代码推送都经过代码质量检查。例如,在package.json中添加以下脚本:

"scripts": { // ... 其他脚本 "ci": "npm run lint && npm run test" }

然后在CI配置文件中(如.github/workflows/ci.yml)添加相应的步骤,运行npm run ci命令。

总结

通过本文的介绍,你已经了解了如何为Eleventy项目配置ESLint、Prettier和Git Hooks工具链。这些工具的集成可以帮助你在开发过程中自动检测代码问题、统一代码风格并规范提交信息,从而提高代码质量和开发效率。

希望本文对你有所帮助,如果你有任何问题或建议,欢迎在项目的issue中提出。让我们一起为Eleventy项目贡献高质量的代码!

项目的官方文档可以参考docs/coverage.md,更多关于Eleventy的功能和使用方法可以查阅项目的源代码,例如src/Core.js。

【免费下载链接】eleventyA simpler site generator. Transforms a directory of templates (of varying types) into HTML.项目地址: https://gitcode.com/gh_mirrors/el/eleventy

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 4:18:32

Websoft9备份与恢复:使用Duplicati实现数据保护的完整方案

Websoft9备份与恢复&#xff1a;使用Duplicati实现数据保护的完整方案 【免费下载链接】websoft9 Applications self-hosting and DevOps platform for running open source, web-based linux Panel of lite PaaS 项目地址: https://gitcode.com/gh_mirrors/we/websoft9 …

作者头像 李华
网站建设 2026/5/1 4:17:12

终极指南:如何独立设置vim-airline终端字体大小

终极指南&#xff1a;如何独立设置vim-airline终端字体大小 【免费下载链接】vim-airline lean & mean status/tabline for vim thats light as air 项目地址: https://gitcode.com/gh_mirrors/vi/vim-airline vim-airline是一款轻量级的Vim状态栏/标签栏插件&#…

作者头像 李华
网站建设 2026/5/1 4:16:27

如何快速搭建私有云游戏平台:Sunshine完整实战指南

如何快速搭建私有云游戏平台&#xff1a;Sunshine完整实战指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款开源免费的自托管游戏串流服务器&#xff0c;专为Moo…

作者头像 李华
网站建设 2026/5/1 4:05:22

别再死记硬背了!用Wireshark+Python实战理解J1939的PGN与SPN

用WiresharkPython实战解析J1939协议&#xff1a;从数据包到PGN/SPN的逆向工程 当商用车在公路上飞驰时&#xff0c;底盘下的CAN总线正以每秒25万比特的速度传输着数百个参数组——发动机转速、刹车压力、尿素液位等关键数据在ECU之间流转。对于工程师而言&#xff0c;这些看似…

作者头像 李华
网站建设 2026/5/1 4:02:37

高效自动化脚本实战指南:彻底解放你的碧蓝航线游戏时间

高效自动化脚本实战指南&#xff1a;彻底解放你的碧蓝航线游戏时间 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研&#xff0c;全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript 还在为碧…

作者头像 李华