Абсолютные пути в импортах: как навести порядок в проекте?
Каждый разработчик хотя бы раз сталкивался с этим:
import Button from '../../../../components/ui/Button';
Чем больше вложенность — тем страшнее становится.
Чёткая структура без лесенок из ../../../../../
.
import Button from 'components/ui/Button';
Меняешь структуру — и ничего не ломается.
Больше не надо пересчитывать, сколько уровней вверх.
Все импорты читаются одинаково, независимо от глубины.
Современные IDE (WebStorm, VSCode) понимают абсолютные пути и дают:
vite.config.ts
:
import { defineConfig } from 'vite';
import path from 'path';
export default defineConfig({
resolve: {
alias: {
'@': path.resolve(__dirname, './src')
}
}
});
tsconfig.json
:
{
"compilerOptions": {
"baseUrl": "./src",
"paths": {
"@/*": ["*"]
}
}
}
webpack.config.js
:
const path = require('path');
module.exports = {
resolve: {
alias: {
'@': path.resolve(__dirname, 'src')
}
}
};
В jsconfig.json
или tsconfig.json
:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@components/*": ["components/*"],
"@utils/*": ["utils/*"]
}
}
}
И используйте так:
import Button from '@components/ui/Button';
root
.Абсолютные импорты — это как уборка в проекте:
Сначала непривычно, потом — не понимаешь, как жил без них.
📌 Настройте alias’ы, добавьте их в tsconfig
и забудьте про ../../../
.
Ваш код и ваша команда - скажет спасибо 🙌