使用別名,優(yōu)雅的import文件( React Native 模塊化)

技術(shù)棧:babel-plugin-module-resolver

import {
  SuruiSerialHexParser,
  unpackCommand,
} from '../../sdk/serialPort/surui/surui_cmd_parser';
import {CommandFrame} from '../../sdk/serialPort/surui/surui_types_const';
import {
  CMD_EVENT_NAMES,
  BRANDS,
} from '../../sdk/serialPort/libs/serial_port_core';

路徑是不是看起來(lái)很不爽,如果嵌套的非常深,比如 '../../../../../' 大概率會(huì)崩潰
修改后

import {
  SuruiSerialHexParser,
  unpackCommand,
} from '@/sdk/serialPort/surui/surui_cmd_parser';
import {CommandFrame} from '@/sdk/serialPort/surui/surui_types_const';
import {
  CMD_EVENT_NAMES,
  BRANDS,
} from '@/sdk/serialPort/libs/serial_port_core';
  1. 安裝依賴
    首先,確保已安裝 babel-plugin-module-resolver:
yarn add babel-plugin-module-resolver -D
# 或
npm install babel-plugin-module-resolver --save-dev
  1. 配置 babel.config.js
    在你的項(xiàng)目根目錄下的 babel.config.js 文件中進(jìn)行如下配置:
module.exports = {
  presets: ['module:metro-react-native-babel-preset'],
  plugins: [
    [
      'module-resolver',
      {
        root: ['./'], // 解析的根路徑,通常為當(dāng)前項(xiàng)目根目錄:cite[1]
        alias: {
          // 定義你的別名映射
          '@': './src', // 將 '@' 指向 './src' 目錄
          '@assets': './assets',
          // ... 你可以繼續(xù)添加其他需要的別名
        },
      },
    ],
  ],
};
  1. 配置 jsconfig.json 或 tsconfig.json
    為了讓你的代碼編輯器(如 VSCode)能夠識(shí)別這些別名并提供智能提示、自動(dòng)補(bǔ)全和跳轉(zhuǎn)功能,你需要在項(xiàng)目根目錄創(chuàng)建或修改 jsconfig.json(JavaScript 項(xiàng)目)或 tsconfig.json(TypeScript 項(xiàng)目)。
// jsconfig.json(JavaScript 項(xiàng)目)
{
  "compilerOptions": {
    "baseUrl": ".", // 以項(xiàng)目根目錄為基準(zhǔn)解析非絕對(duì)路徑模塊
    "paths": {
      "@/*": ["src/*"],
      "@assets/*": ["assets/*"],
    },
    "target": "ES6",
    "module": "commonjs",
    "allowSyntheticDefaultImports": true
  },
  "include": ["src/**/*"], // 指定包含的文件
  "exclude": ["node_modules"]
}

TypeScript 項(xiàng)目 (tsconfig.json)

{
  "compilerOptions": {
    "baseUrl": ".", // 解析非絕對(duì)模塊名的基目錄
    "paths": {
      "@/*": ["src/*"],
      "@assets/*": ["assets/*"],
    },
    // ... 其他 TypeScript 配置
  }
}
  1. 清理緩存并重啟開(kāi)發(fā)服務(wù)器
    配置完成后,務(wù)必清理 Metro 打包器的緩存并重啟項(xiàng)目,因?yàn)?Metro 可能會(huì)緩存舊的模塊解析規(guī)則
yarn start -- --reset-cache
# 或
npx react-native start --reset-cache
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容