Next.js 项目——从入门到入门(Eslint+Prettier)

news2024/12/27 13:09:44

Next.js官方文档地址

什么是 Next.js

这是一个用于生产环境的 React 框架。

Next.js 为您提供生产环境所需的所有功能以及最佳的开发体验:包括静态及服务器端融合渲染、 支持 TypeScript、智能化打包、 路由预取等功能,无需任何配置。

功能:

功能说明
零配置自动编译并打包。从一开始就为生产环境而优化
混合模式: SSG 和 SSR在一个项目中同时支持构建时预渲染页面(SSG)和请求时渲染页面(SSR)
增量静态生成在构建之后以增量的方式添加并更新静态预渲染的页面
支持 TypeScript自动配置并编译 TypeScript
快速刷新快速、可靠的实时编辑体验,已在 Facebook 级别的应用上规模上得到验证
基于文件系统的路由每个 pages 目录下的组件都是一条路由
API 路由创建 API 端点(可选)以提供后端功能
内置支持 CSS使用 CSS 模块创建组件级的样式。内置对 Sass 的支持
代码拆分和打包采用由 Google Chrome 小组创建的、并经过优化的打包和拆分算法

更多功能: 支持 环境变量、 预览模式、 自定义 head 标签、 自动使用 polyfills 等等

项目创建

使用 pnpm 创建一个默认的 Next.js 应用,代码如下:

pnpx create-next-app nextjs-blog --use-pnpm

接下来会有一些option操作,可以根据自身需求来选择,这里的选择如下:

nextjs

启动项目的时候需要注意一下,当前 next 包用到的 node 版本。通过 node_modules/next/package.json 来查看一下,如图:

nextjs

需要项目的 node 版本至少满足 next 包的 node 版本,因此本项目使用 v18 的 Node.js,可以通过 node -v 检查版本,如图:

nodejs

项目运行

在项目创建的时候,依赖已经安装好了,所以直接运行即可。这里使用的是 pnpm,当然可以用 npm 或者 yarn 工具。

cd nextjs-blog

pnpm dev
# or
yarn dev
# or
npm run dev

将在3000端口上启动 Next.js 应用程序,在浏览器打开http://localhost:3000/,可以看到demo成功运行,如图:

nextjs

引擎锁定

在启动项目前检查过 Node.js 版本,可以像 next 包一样通过 engines 字段指定工具的特定版本。

{
  "name": "nextjs-blog",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint"
  },
  "dependencies": {
    "react": "^18",
    "react-dom": "^18",
    "next": "14.0.1"
  },
  "devDependencies": {
    "eslint": "^8",
    "eslint-config-next": "14.0.1"
  },
  "engines": {
    "node": ">=18.17.0"
  }
}

代码规范工具与格式化

为了设定一个标准,供项目的所有贡献者使用,以保持代码风格一致并遵循基本的最佳实践,本项目将使用两个工具:

  • Eslint - 代码规范工具
  • Prettier - 代码格式化工具

ESLint

  1. 下载 ESLint 相关依赖
pnpm install eslint eslint-config-prettier eslint-plugin-prettier eslint-plugin-react @next/eslint-plugin-next -D
依赖说明
eslintESLint 核心库
eslint-config-prettier关掉所有和 Prettier 冲突的 ESLint 的配置
eslint-plugin-prettier将 Prettier 的 rules 以插件的形式加入到 ESLint 里面
eslint-plugin-react为 React 使用 ESlint 的插件
@next/eslint-plugin-next为 Next 使用 ESlint 的插件
  1. 安装 Vscode 插件(ESLint)

eslint

  1. 配置 ESLint(.eslintrc.json)
{
  "extends": "next/core-web-vitals"
}
  1. 使用 ESLint

package.json 文件的 scripts 命令中:

lint

可以测试一下当前配置,通过运行以下命令:

pnpm lint

会得到如图提示:

eslint

Prettier

  1. 下载 prettier 相关依赖
pnpm install prettier -D
  1. 安装 Vscode 插件(Prettier)

Prettier
3. 配置 Prettier(.prettierrc)

.eslintrc.json

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

.prettierrc

{
  "tabWidth": 2,
  "useTabs": false,
  "semi": false,
  "singleQuote": true,
  "quoteProps": "as-needed",
  "jsxSingleQuote": false,
  "trailingComma": "none",
  "bracketSpacing": true,
  "bracketSameLine": false,
  "arrowParens": "avoid",
  "requirePragma": false
}

.prettierignore

/dist/*
/build
.local
.next
/node_modules/**

**/*.svg
**/*.sh

/public/*
*.yaml
*.json
*.md
.prettierrc

此文件是不希望 prettier 在这些目录中浪费任何资源去进行格式化,也可以使用类似 *.html 这样的方式去忽略文件。

现在,可以在 package.json 添加新的 script

prettier

可以测试一下当前配置,通过运行以下命令:

pnpm prettier

会得到如图提示:
prettier

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1186754.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何下载PDF版本的专利

问题描述:有时下载的专利是CAJ格式,需要用CAJViewer软件才能观看,那么如何下载pdf版本的呢? 问题解决: 方法一: 使用CAJViewer软件进行转换。(注意:这种方法转换的PDF其实就是一个…

重磅发布 OpenAI 推出用户自定义版 ChatGPT

文章目录 重磅发布 OpenAI 推出用户自定义版 ChatGPT个人简介 重磅发布 OpenAI 推出用户自定义版 ChatGPT OpenAI 首届开发者大会 (OpenAI DevDay) 于北京时间 11 月 7 日凌晨 02:00 开始,大会上宣布了一系列平台更新。其中一个重要更新是用户可以创建他们自己的自定…

Python 批量修改文件中的时间属性

目录 前言: 探索: 读取文件的属性时间 更改文件属性时间 使用 win32file 修改时间属性 all code: 前言: 有时候需要修改文件的“修改时间” 、 “访问时间”,“创建时间” 使用 Python 写出来简单好用。 探索: …

Power Apps-获取用户信息

插入一个文本组件,点击该组件,点击右侧边栏中的文本,在上方函数中写入如下内容就可以获取到用户信息了 "Hello!"&User().FullName//字符串拼接

中文编程软件视频推荐,自学编程电脑推荐,中文编程开发语言工具下载

中文编程软件视频推荐,自学编程电脑推荐,中文编程开发语言工具下载 给大家分享一款中文编程工具,零基础轻松学编程,不需英语基础,编程工具可下载。 这款工具不但可以连接部分硬件,而且可以开发大型的软件…

IPv6详解

目录: 第一部分 IPv6的诞生背景和引起的主要变化 第二部分 IPv6数据报的基本首部和扩展首部 第三部分 IPv6地址 第四部分 IPv4向IPv6过渡 第一部分 IPv6的诞生背景和引起的主要变化 一.IPv6的诞生背景 IPv4存在设计缺陷: IPv4的设计者最初并没有想到该协议会在全球范围内广…

leetcode做题笔记226. 翻转二叉树

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]示例 2: 输入:root [2,1,3] 输出:[2,3,1]示例 3&#x…

8086读取键盘-磁盘输入

文章目录 前言1.从键盘读数据2.磁盘读数据 前言 想过一个问题没有, 8086是如何从键盘中接受输入的? 8086如何将字符在显示器上显示的? 8086如何从磁盘中读取数据的? 上面的问题都是没有操作系统的时候,比如bios的那段…

VSCode使用插件Github Copilot进行AI编程

演示示例 函数封装 根据上下文 根据注释 详情请看GitHub Copilot 安装插件 在VS Code中安装插件 GitHub Copilot 登录账号 点击VS code左下角账户图标,点击【Sign in】,会自动在浏览器打开Github登录页,登录具有 Github Copilot 服务的…

Wireshark分析tcp交互过程

三次握手 客户端发起请求 Tcp段长度为575字节,seq1,ack1,next_seq576 服务器响应: Tcp段长度为175字节,seq1,ack576,next_seq176 客户端响应: Tcp段长度523字节,seq576&…

OpenGL_Learn08(坐标系统)

目录 1. 概述 2. 局部空间 3. 世界空间 4. 观察空间 5. 剪裁空间 6. 初入3D 7. 3D旋转 1. 概述 OpenGL希望在每次顶点着色器运行后,我们可见的所有顶点都为标准化设备坐标(Normalized Device Coordinate, NDC)。也就是说,每个顶点的x,…

2023.11.7 Spring 依赖注入的三大方式

目录 前言 属性注入&#xff08;Autowired&#xff09; Setter 注入 构造方法注入 Resource Autowired 和 Resource 的区别 Autowired 和 Resource 查找 Bean 对象的区别 前言 配置文件 ​ <?xml version"1.0" encoding"UTF-8"?> <beans …

Park和UnPark底层原理

文章目录 1. 简介2. 底层原理3. 总结 1. 简介 park和unpark也是一个线程暂停技术&#xff08;让线程进入wait状态&#xff09;&#xff0c;与wait/notify不同的是&#xff0c;前者是LockSupport类中的方法&#xff0c;后者是Object类中的方法。其次&#xff0c;wait与notify和…

Makefile 介绍

目录 一、Makefile 的规则 二、一个示例 三、make 是如何工作的 四、makefile 中使用变量 五、让 make 自动推导 六、另类风格的 makefile 七、清空目标文件的规则 make 命令执行时&#xff0c;需要一个 Makefile 文件&#xff0c;以告诉 make 命令需要怎么样的去编译和…

1.docker linux离线环境安装 20.1.0.12

目录 概述下载解压docker 卸载docker 安装检查安装环境常用命令结束 概述 docker离线环境安装 20.1.0.12 , centos 7.x 下载 安装包下载 解压 [roothadoop01 soft]# unzip docker_20_1_0_12.zip [roothadoop01 soft]# cd docker_20_1_0_12 [roothadoop01 docker_20_1_0_1…

Java系统操作日志之数据修改变化记录

系统操作日志之数据修改变化记录 前言效果图如何实现总结 相信大家在自己的系统中都有记录日志吧&#xff0c;像登录日志、操作日志等等 但是一般来说&#xff0c;大家都是获取操作了什么东西&#xff0c;包括它的参数&#xff0c;模块等等&#xff0c;但是你有关心过他的数据变…

06【保姆级】-GO语言的运算符

之前我学过C、Java、Python语言时总结的经验&#xff1a; 先建立整体框架&#xff0c;然后再去抠细节。先Know how&#xff0c;然后know why。先做出来&#xff0c;然后再去一点点研究&#xff0c;才会事半功倍。适当的囫囵吞枣。因为死抠某个知识点很浪费时间的。对于GO语言&a…

使用MCU上的I2C总线进行传感器应用

使用MCU上的I2C总线进行传感器应用是嵌入式系统开发中常见的任务&#xff0c;本文将介绍在MCU上实现I2C总线传感器应用的相关技术和流程。 首先&#xff0c;I2C&#xff08;Inter-Integrated Circuit&#xff09;总线是一种常用的串行通信协议&#xff0c;用于连接多个设备&am…

2023/11/8JAVA学习

多个条件也可以&&放在一块,支持链式编程 map()数据加工,一个对象转化为另一个 不能这样写 不会去重报错

java入门,记一次mysql函数使用

一、前言 记一次mysql函数使用&#xff0c;要求给一个字段进行拼接&#xff0c;然后MD5加密&#xff0c;再转换成大写。这里都是有现成的函数&#xff0c;所以记录下来 二、函数使用 1、拼接函数&#xff1a; concat(字符串1,字符串2) select concat(字符串1,字符串2); 2、…