๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป ํ”„๋ก ํŠธ์—”๋“œ

[React Native] Path alias ์„ค์ •

by megan07 2024. 1. 3.

๋ฐฉ๋ฒ•์€ 2๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

1. tsconfig + package.json

  • tsconfig ํŒŒ์ผ์„ ์„ค์ •ํ•ด์ฃผ๊ณ 
  • path alias๋ฅผ ์„ค์ •ํ•  ๋ชจ๋“  ํด๋”์— package.json ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ํด๋”์— package.json ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์•ผ ํ•ด์„œ ๋ฒˆ๊ฑฐ๋กญ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
//tsconfig.json

{
  "extends": "@tsconfig/react-native/tsconfig.json",
  "compilerOptions": {
    "baseUrl": "./src",
    "paths": {
      "@components/*": ["components/*"],
      "@hooks/*": ["hooks/*"],
      "@pages/*": ["pages/*"],
      "@routes/*": ["routes/*"],
      "@types/*": ["types/*"],
      "@utils/*": ["utils/*"]
    }
  }
}
//routes ํด๋” ์•ˆ์˜ package.json ํŒŒ์ผ
{
  "name": "@routes"
}

2. tsconfig + babel.config.js

  • tsconfigํŒŒ์ผ์„ ์„ค์ •ํ•ด์ฃผ๊ณ 
  • babel.config.js ํŒŒ์ผ์„ ์„ค์ •ํ•ด์ค๋‹ˆ๋‹ค
  • ์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์€ babel.config.js ํŒŒ์ผ์˜ alias์—๋Š” *๊ฐ€ ๋“ค์–ด๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
//tsconfig.json

{
  "extends": "@tsconfig/react-native/tsconfig.json",
  "compilerOptions": {
    "baseUrl": "./src",
    "paths": {
      "@components/*": ["components/*"],
      "@hooks/*": ["hooks/*"],
      "@pages/*": ["pages/*"],
      "@routes/*": ["routes/*"],
      "@types/*": ["types/*"],
      "@utils/*": ["utils/*"]
    }
  }
}
//babel.config.js

module.exports = {
  presets: ['module:metro-react-native-babel-preset'],
  plugins: [
    [
      'module-resolver',
      {
        root: ['./src'],
        extensions: [
          '.ios.ts',
          '.android.ts',
          '.js',
          '.ts',
          '.jsx',
          '.tsx',
          '.json',
        ],
        alias: {
          '@components': './src/components',
          '@hooks': './src/hooks',
          '@pages': './src/pages',
          '@routes': './src/routes',
          '@types': './src/types',
          '@utils': './src/utils',
        },
      },
    ],
  ],
};