Сокращение путей с помощью алиасов

Сокращение путей с помощью алиасов

В данной статье рассмотрим как с помощью алиасов сократить пути для импортов. Это бывает полезно, когда вы работаете в больших проектах.

Мы рассмотрим сокращение путей в Typescript, Vite, Webpack, Rollup и ESBuild, то есть во всех популярных бандлерах для JavaScript.

С помощью алиасов можно повысить читаемость import. Вот пример как могут выглядеть плохие импорты:

import Data from '../../../data/someData';

Вот пример как выглядят хорошие импорты:

import Data from '@data/someData'

К слову, все примеры внизу будут соответствовать листингу сверху. То есть мы будем рассматривать примеры конфигураций, где вместо того чтобы писать ../../../data/someData у нас была возможность написать @data/someData.

🧱 Typescript

Для того чтобы Typescript понимал алиасы - нам достаточно добавить следующие поля в tsconfig.json.

tsconfig.json:

{ // Добавляем директорию откуда будут строиться пути "baseUrl": ".", // Добавляем алиасы для путей "paths": { "@/*": ["src*"], "@data/*": ["src/data/*"] } }

Теперь мы можем импортировать файлы из корневой директории с помощью @ и файлы из папки src/data с помощью @data.

import someData from "@/data/someData"; // Или import someData from "@data/someData";

⚡ Vite

Если мы используем Vite без Typescript, то нам нужно указать алиасы в конфигурации Vite.

vite.config.js:

import {fileURLToPath} from "url"; import {defineConfig} from 'vite'; export default defineConfig({ // ... resolve: { alias: [ { find: '@', replacement: fileURLToPath(new URL('./src', import.meta.url)) }, { find: '@data', replacement: fileURLToPath(new URL('./src/data', import.meta.url)) }, ], }, // ... })

💨 Webpack

Если же мы собираем продукт на Webpack, то нам нужно написать следующее в конфигурации Webpack:

webpack.config.js:

const path = require('path'); module.exports = { //... resolve: { alias: { "@": path.resolve(__dirname, 'src/'), "@data": path.resolve(__dirname, 'src/data/'), }, }, // ... };

🦀 Rollup

Для того чтобы использовать алиасы в Rollup нам нужен плагин. Плагин можно установить следующей командой:

npm i -D @rollup/plugin-alias

Далее пишем следующий код в конфигурации:

rollup.config.js:

import alias from '@rollup/plugin-alias'; module.exports = { // ... plugins: [ alias({ entries: [ { find: '@', replacement: 'src/' }, { find: '@data', replacement: 'src/data/' } ] }) ] // ... };

🌝 ESBuild

Для того чтобы добавить алиасы к ESBuild нужно установить плагин:

npm i -D esbuild-plugin-alias

Затем нужно добавить следующее в конфигурацию:

const esbuild = require('esbuild'); const alias = require('esbuild-plugin-alias'); esbuild.build({ // ... plugins: [ alias({ '@': path.resolve(__dirname, `./src/*`), '@data': path.resolve(__dirname, `./src/data/*`), }), ], // ... });

Вместо заключения 🌚

Если вам понравилась данная статья - то вы всегда можете перейти в мой блог, там больше схожей информации о веб-разработке.

Если у вас остались вопросы - не стесняйтесь задавать их в комментариях. Хорошего времяпрепровождения!💁🏻‍♂

33
Начать дискуссию