Абсолютные пути в импортах: как навести порядок в проекте?
Каждый разработчик хотя бы раз сталкивался с этим:
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 и забудьте про ../../../.
Ваш код и ваша команда - скажет спасибо 🙌