Files
workspace/code/docusaurus/docs/coding/react-native/expo/03-基础配置.md
T
2026-03-18 17:14:34 +08:00

3.3 KiB
Raw Blame History

生成基础文件,后面要用到:

npx expo customize babel.config.js
npx expo customize metro.config.js

配置eslint格式化

可以使用快捷命令(推荐):

pnpm dlx @antfu/eslint-config@latest

安装:

pnpm i -D eslint @antfu/eslint-config

新建 eslint.config.mjs 文件:

import antfu from '@antfu/eslint-config'

export default antfu({
  stylistic: {
    indent: 2, // 缩进为 2 个空格(可选 4 或 'tab')
    quotes: 'single', // 使用单引号(可选 'double')
  },
  rules: {
    'unused-imports/no-unused-imports': 'warn',
    'unused-imports/no-unused-vars': 'warn',
    '@typescript-eslint/no-use-before-define': 'off', // 关闭 TS 的“定义前使用”警告
    'no-console': 'off', // 关闭 console 报错
  },
})

配置 vscode 模板,修改 .vscode/settings.json :

注意安装 eslint 插件

{
  // Disable the default formatter, use eslint instead
  "prettier.enable": false,
  "editor.formatOnSave": false,

  // Auto fix
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": "explicit",
    "source.organizeImports": "never"
  },

  // Silent the stylistic rules in you IDE, but still auto fix them
  "eslint.rules.customizations": [
    { "rule": "style/*", "severity": "off", "fixable": true },
    { "rule": "format/*", "severity": "off", "fixable": true },
    { "rule": "*-indent", "severity": "off", "fixable": true },
    { "rule": "*-spacing", "severity": "off", "fixable": true },
    { "rule": "*-spaces", "severity": "off", "fixable": true },
    { "rule": "*-order", "severity": "off", "fixable": true },
    { "rule": "*-dangle", "severity": "off", "fixable": true },
    { "rule": "*-newline", "severity": "off", "fixable": true },
    { "rule": "*quotes", "severity": "off", "fixable": true },
    { "rule": "*semi", "severity": "off", "fixable": true }
  ],

  // Enable eslint for all supported languages
  "eslint.validate": [
    "javascript",
    "javascriptreact",
    "typescript",
    "typescriptreact",
    "vue",
    "html",
    "markdown",
    "json",
    "jsonc",
    "yaml",
    "toml",
    "xml",
    "gql",
    "graphql",
    "astro",
    "svelte",
    "css",
    "less",
    "scss",
    "pcss",
    "postcss"
  ]
}

配置深度链接

作用:通过链接就可以跳转到该app。

在 app.json 文件下进行配置:

{
  "expo": {
    "scheme": "oneao"
  }
}

然后就可以通过这个配置 从别的应用或者浏览器跳转到你的app:

oneao://courses/react-native

定义 src 路径别名 @

参考:https://docs.expo.dev/guides/typescript/

修改 tsconfig.json 文件:

{
  "extends": "expo/tsconfig.base",
  "compilerOptions": {
    "baseUrl": "./",
    "paths": {
      "@/*": ["src/*"]
    },
    "strict": true
  }
}

安装 module-resolver :

pnpm add -D babel-plugin-module-resolver

修改 babel.config.js :

module.exports = function (api) {
  api.cache(true)
  return {
    presets: [
      ['babel-preset-expo', { jsxImportSource: 'nativewind' }],
      'nativewind/babel',
    ],
    plugins: [
      [
        'module-resolver',
        {
          root: ['./src'],
          alias: {
            '@': './src',
          },
        },
      ],
    ],
  }
}