当前位置: 首页 > news >正文

react native项目配置eslint+prettier

一、创建react native项目

pnpm create expo-app --template default@sdk-57

具体参见Expo官网

二、安装prettier和eslint相关依赖

安装prettier相关依赖

pnpm add prettier eslint-config-prettier eslint-plugin-prettier @ianvs/prettier-plugin-sort-imports prettier-plugin-sort-json eslint-plugin-unused-imports prettier-plugin-tailwindcss -D

安装eslint相关依赖

pnpm add -D eslint eslint-config-expo
作用
eslint检查代码问题
eslint-config-expoExpo/RN/TS 官方规则集
prettier格式化
eslint-config-prettier关掉和 Prettier 冲突的 ESLint 规则
eslint-plugin-prettier把 Prettier 问题当 ESLint 报错

可选(你用了 NativeWind/Tailwind):

pnpm add -D prettier-plugin-tailwindcss

三、配置文件

1、eslint.config.js`(项目根目录,Flat Config)

// https://docs.expo.dev/guides/using-eslint/ const { defineConfig } = require('eslint/config'); const expoConfig = require('eslint-config-expo/flat'); const prettierConfig = require('eslint-config-prettier'); const eslintPluginPrettierRecommended = require('eslint-plugin-prettier/recommended'); const unusedImports = require('eslint-plugin-unused-imports'); const prettierOptions = require('./prettier.config.js'); module.exports = defineConfig([ expoConfig, prettierConfig, eslintPluginPrettierRecommended, { plugins: { 'unused-imports': unusedImports, }, rules: { '@typescript-eslint/no-unused-vars': 'off', 'no-unused-vars': 'off', 'unused-imports/no-unused-imports': 'error', 'unused-imports/no-unused-vars': [ 'warn', { vars: 'all', varsIgnorePattern: '^_', args: 'after-used', argsIgnorePattern: '^_', }, ], // 显式传入同一份 Prettier 配置,避免编辑器缓存旧 .prettierrc 导致排序打架 'prettier/prettier': ['error', prettierOptions], }, }, { ignores: ['dist/*', 'android/*', 'ios/*', '.expo/*'], }, ]);

2、创建prettier.config.js

选用json文件若装了 `prettier-plugin-tailwindcss`:

/** @type {import('prettier').Config} */ module.exports = { semi: true, singleQuote: true, trailingComma: 'all', printWidth: 100, tabWidth: 2, endOfLine: 'lf', singleAttributePerLine: true, // require.resolve: ESLint / pnpm 下也能稳定加载插件 plugins: [ require.resolve('@ianvs/prettier-plugin-sort-imports'), require.resolve('prettier-plugin-sort-json'), require.resolve('prettier-plugin-tailwindcss'), ], importOrder: [ '^(react/(.*)$)|^(react$)', '^(expo(.*)$)|^(expo$)', '<THIRD_PARTY_MODULES>', '', '^@/(.*)$', '^[./]', ], importOrderParserPlugins: ['typescript', 'jsx'], importOrderTypeScriptVersion: '5.0.0', };

3、 prettier忽略文件 .prettierignore

node_modules dist android ios .expo pnpm-lock.yaml *.lock

可选:`.eslintignore` 在 Flat Config 下一般用 `ignores` 即可,可不单独建。

注释

完成以上配置以后,有时候会出现代码不规范编辑器不爆出红色的现象。这不是编辑器设置的问题,是 ESLint 本身崩了,所以红线出不来。

根本原因:项目装的是 ESLint 10.7.0,而eslint-config-expo依赖的eslint-plugin-react还不支持 ESLint 10

解决办法: 把 ESLint 钉在 9.x(eslint-config-expo开发用的也是^9.18.0):

pnpm add -D eslint@^9

我目前安装的eslint是^9.39.5

四、文件清单小结

文件是否需要
eslint.config.js✅ 需要
.prettierignore✅ 需要
.prettierrc✅ 建议有
.eslintrc.js❌ SDK 57 用 Flat,不必再加

五、最快上手

npx expo lint npx expo install --dev prettier eslint-config-prettier eslint-plugin-prettier

然后按上面写好 `eslint.config.js` 和 `.prettierrc`,再跑:

```bash
pnpm lint
```

http://www.cnnetsun.cn/news/3498583.html

相关文章:

  • 储能电池就这么选性价比高I好用的电池回收信息对接平台
  • 【Coding生态】从代码托管到 AI 能力底座:与Coding一起共建 AI 研发生态
  • 嘉准专利柔性红尾套线缆:上万次往复折弯不断线,告别每周停机换线
  • 一种欠定盲源分离方法及其在模态识别中的应用附Matlab代码
  • 2026年科研检测行业 难溶样品卡尔费休辅助溶剂选择解析
  • 题解:洛谷 B4359 [GESP202506 三级] 分糖果
  • HarmonyOS ArkUI Marquee 跑马灯与 Gauge 仪表盘:公告滚动与数据展示
  • 【计算机毕业设计】本科生学习资源整合功能设计与实现
  • 【AI大模型微调】第 3 章 微调整体流程
  • 为什么你的团队还没启用Gemini会议助手?——来自Google Cloud认证架构师的3个致命认知盲区
  • 基于用户注册信息的关键词检测挑战赛「Datawhale AI 夏令营」
  • 【计算机毕业设计】农产品销售系统设计与实现
  • C++ 性能优化:移动语义、完美转发与返回值优化
  • Three.js WebGL 安全加固实战:Shader 来源验证、WebGL 扩展沙箱与纹理域名白名单
  • 灾备演练:切换 DR 站点后的全国 SpeedCE 点检
  • ImageGlass终极指南:跨平台免费开源图片查看器的完整解决方案
  • 又一个神级画图 Skill 开源,再见 draw.io!
  • 【AI专栏】图解深度学习-AI infra工程师必知必会 - 第 04 章:训练 vs 推理
  • 不同算力下 AI 视频生成效果对比:RTX4090 vs A100 实测差距有多大
  • 1. 专业冰场建设,哪些公司实力较强?全面解析冰场建设市场2. 专业冰场建设实力强的公司有哪些?冰场建设企业大盘点3.
  • 瑜伽馆管理系统有什么功能?约课系统哪家好?
  • 【Java基础】分支结构与循环语句 超详细笔记(零基础易懂)
  • 2 机器学习基础
  • 知识图谱增强的 RAG——GraphRAG 的架构原理与 Java 实现路径
  • API调用失败率下降73%?揭秘Gemini辅助编程中被忽略的4层上下文校验机制
  • 告别复制粘贴!2026年程序员必备的 AI 辅助编程“防坑”指南
  • 为什么有些论文答辩提前结束,老师还直接让通过了?
  • Python GPU 任务调度:CUDA 显存管理和多进程隔离
  • 一款开源免费的游戏俱乐部管理系统
  • VisualCppRedist AIO:解决Windows软件兼容性问题的终极方案