前言
我喜欢使用自动化的工具为项目代码提供错误检查与整理,因此使用 ESLint 与 Prettier 让撰写的代码更一致无错,还有额外添加 TypeScript 的检查与 VSCode 提示。
使用套件说明
以下是需要安装的套件名称与用途,这里我选择使用 TypeScript 与 Airbnb 风格的设置档,可以自行决定更换合适自己的设置。
- eslint - 检查并修复代码问题
 - eslint-config-airbnb-base - 让 ESLint 以 Airbnb 规范检查
 - eslint-plugin-astro: 让 ESLint 兼容 Astro
 - eslint-plugin-jsx-a11y: 让 ESLint 检查 JSX 的无障碍性问题
 - @typescript-eslint/parser: 让 ESLint 兼容 TypeScript
 - eslint-plugin-import - 让 ESLint 检查 imports
 - prettier - 整理代码
 - prettier-plugin-astro - 让 Prettier 兼容 Astro
 - eslint-config-prettier - 让 ESLint 与 Prettier 互相兼容
 
安装套件
在项目位置执行以下指令安装前述的所有套件: npm install --save-dev @typescript-eslint/parser eslint eslint-config-airbnb-base eslint-config-prettier eslint-plugin-astro eslint-plugin-import eslint-plugin-jsx-a11y prettier prettier-plugin-astro。
设置套件
创建 eslintrc.cjs 文件并放置在项目的根部:
module.exports = {  extends: ['airbnb-base', 'plugin:astro/recommended', 'plugin:astro/jsx-a11y-recommended', 'prettier'],  // ...  overrides: [    {      files: ['*.astro'],      parser: 'astro-eslint-parser',      parserOptions: {        parser: '@typescript-eslint/parser',        extraFileExtensions: ['.astro'],      },      rules: {},    },  ],};创建 prettierrc.cjs 文件并放置在项目的根部,设置合适的风格样式:
module.exports = {  trailingComma: 'all',  tabWidth: 2,  semi: true,  singleQuote: true,  printWidth: 120,  bracketSpacing: true,};创建 settings.json 文件并放置在项目根部的 .vscode 文件夹,这样可以提醒 VSCode 使用 ESLint 作为 Formatter 的时候要验证的文件类型:
{  "eslint.validate": ["javascript", "javascriptreact", "astro", "typescript", "typescriptreact"]}最后可以增加一些 NPM Script,当想要手动执行 ESLint 或 Prettier 检查的时候就可以执行 npm run lint 或 npm run prettier,在 package.json 中添加以下两行指令:
"scripts": {  // ...  "lint": "eslint src/**/*.{js,astro}",  "prettier": "prettier src/**/*.{js,astro}"}此外如果有用 Alias 还可以再安装 eslint-import-resolver-alias 套件,这样使用 Alias 路径的时候就会被 ESLint 认得,不会出现错误。
  settings: {    'import/resolver': {      alias: {        map: [['@', './src']],        extensions: ['.astro', '.ts', '.tsx', '.js', '.jsx', '.json', '.vue'],      },    },  },这样一来只要输入 @ 就能够代表 src 文件夹,不用再根据文件相对位置撰写繁杂的路径了!
<!-- 😎 -->import Card from '@/components/Card.astro';<!-- 😫 -->import Card from '../../components/Card.astro'结语
经过以上的设置,整个项目就有完美的整理与提示了,有问题可以观察我在自己的项目中的 Commit 示例,或是在底下留言处询问。