使用NextJS引入prettier和eslint来提高代码的可读性

你好,我是一名学生,正在开发Web3应用程序的安室谷。

这次和Web3不同,我尝试在NextJS中引入prettier和eslint。过去,我并没有意识到可读性的重要性,但在我所学的专业中听得太多,以致耳朵都要长茧了,让我深刻感受到了它的重要性。

eslint – 语法检查工具

在Next.js中,只需输入命令即可完成包的安装和文件创建,无需运行yarn add命令。非常方便。

...
"lint":"next lint"
...
yarn lint

yarn run v1.22.19
$ next lint
? How would you like to configure ESLint? https://nextjs.org/docs/basic-features/eslint 
(ここはStrictを選択)

Installing devDependencies (yarn):
- eslint
- eslint-config-next

在安装完成后生成的文件在这里。

{
    "extends": "next/core-web-vitals",
}

eslint的最终配置


{
    "extends": "next/core-web-vitals",
    "rules": {
        "react/react-in-jsx-scope": "off",
        "react/prop-types": "off",
        "react/function-component-definition": {
            "namedComponents": "arrow-function",
            "unnamedComponents": "arrow-function"
        }
    },
    "parser": "@typescript-eslint/parser",
    "parserOptions": {
        "ecma": "latest",
        "project": "./tsconfig.json",
        "ecmaFeatures": {
            "jsx": true
        }
    }
}

原本的设定基础上,我们添加了一些 TypeScript 解析器(需要单独的包)。

更漂亮

首先按照以下的方式安装软件包。由于拼写有些复杂,建议直接复制粘贴。

 yarn add -D prettier eslint-config-prettier

在安装完成后,在项目的根目录将创建一个名为.prettierrc.json的文件。

有很多选择,但我喜欢这样的感觉。

{
    "arrowParens": "always",
    "bracketSameLine": true,
    "bracketSpacing": true,
    "semi": true,
    "experimentalTernaries": false,
    "singleQuote": true,
    "jsxSingleQuote": true,
    "quoteProps": "as-needed",
    "trailingComma": "all",
    "singleAttributePerLine": true,
    "htmlWhitespaceSensitivity": "css",
    "vueIndentScriptAndStyle": false,
    "proseWrap": "preserve",
    "insertPragma": false,
    "printWidth": 80,
    "requirePragma": false,
    "useTabs": false,
    "embeddedLanguageFormatting": "auto",
    "tabWidth": 4
}

在视觉上缩进对齐会更加好看,所以我觉得还是设置一下Tabwidth比较好。

你也可以在以下的網站上嘗試這些設置,它還會將結果以json格式輸出,非常推薦。

 

请使用以下命令执行

npx prettier . --write

执行前和执行后

这是对执行格式化后的代码进行比较。由于行数较少,可能有些难以理解,但是双引号已经统一为单引号,并且在所有的import语句后添加了分号。

在执行之前

import { useAccount, useConnect, useDisconnect } from 'wagmi'
import { InjectedConnector } from 'wagmi/connectors/injected'
import { Button, Box, Text, Center } from '@chakra-ui/react'
import Layout from "../layout/main";
import { ReactNode } from "react";
import HMeta from "../components/headmeta";
export default function Home() {

执行后

import { useAccount, useConnect, useDisconnect } from 'wagmi';
import { InjectedConnector } from 'wagmi/connectors/injected';

import { Button, Box, Text, Center } from '@chakra-ui/react';
import Layout from '../layout/main';
import { ReactNode } from 'react';
import HMeta from '../components/headmeta';

以下是一种可能的中文转述:

对比一下

- import { useAccount, useConnect, useDisconnect } from 'wagmi'
+ import { useAccount, useConnect, useDisconnect } from 'wagmi';
- import { InjectedConnector } from 'wagmi/connectors/injected'
+ import { InjectedConnector } from 'wagmi/connectors/injected';

import { Button, Box, Text, Center } from '@chakra-ui/react';
import Layout from '../layout/main';
import { ReactNode } from 'react';
import HMeta from '../components/headmeta';

結語

我第一次使用了代码格式化工具,但是代码变得更易读了很多。我将继续尝试各种方法。???

参考网站和Qiita文章

非常感谢sakelog的文章提供的参考。

 

包裹的网站 de

 

广告
将在 10 秒后关闭
bannerAds