etc
프로젝트에서 파일이나 모듈을 가져올 때 상대경로 대신
사용자가 정의한 경로인 모듈 별칭을 사용할 수 있다.
예를 들면 ../../components/Button 대신 @components/Button처럼 간결하고 명확한 임포트 경로로 만들 수 있다.
npm install --save-dev babel-plugin-module-resolvermodule.exports = {
presets: ['babel-preset-expo'],
plugins: [
'react-native-reanimated/plugin',
[
'module-resolver',
{
root: ['.'],
alias: {
'@assets': './assets',
'@components': './src/components',
'@constants': './src/constants',
'@hooks': './src/hooks',
'@navigations': './src/navigations',
'@screens': './src/screens',
'@services': './src/services',
'@store': './src/store',
'@styles': './src/styles',
'@utils': './src/utils',
},
},
],
],
};babel.config.js 파일에 모듈 리졸버 플러그인을 추가하고, 별칭으로 경로들을 설정해준다.
{
"extends": "expo/tsconfig.base",
"compilerOptions": {
"strict": true,
"jsx": "react-native",
"esModuleInterop": true,
"resolveJsonModule": true,
"baseUrl": ".",
"paths": {
"@assets/*": ["./assets/*"],
"@components/*": ["./src/components/*"],
"@constants": ["./src/constants"],
"@hooks/*": ["./src/hooks/*"],
"@navigations": ["./src/navigations"],
"@screens/*": ["./src/screens/*"],
"@services/*": ["./src/services/*"],
"@store": ["./src/store"],
"@styles": ["./src/styles"],
"@utils": ["./src/utils"]
}
},
"include": ["**/*.ts", "**/*.tsx", "declarations.d.ts"]
}TypeScript를 사용중이므로 tsconfig.json에도 path로 경로를 설정했다.
이렇게 해주면
import Component from '../../components/Component';
기존에 상대경로로 import해서 사용했던 방식을
import Component from '@components/Component';
절대경로처럼 사용할 수 있다.