Не очень понятно, где проблема - под алиасами тут будто бы понимаются одновременно именованные экспорты из пакетов и одновременно алиасы для импорта внутри самого приложения.
Если у вас внешний пакет (иначе непонятно, причём тут `main` в `package.json`), и вам нужно сделать экспорт конкретного файла по "короткому" пути, то следует оформить так:
// package.json вашего пакета, допустим, "mypackage"
{
"name": "mypackage",
"exports": {
".": "./dist/index.js",
"./whatever/": "./dist/whatever/non-index.js"
}
}
Важно: это минимальная версия, там есть тонкости относительно разного экспорта ESM, CJS и d.ts файлов, но тут такой вопрос не стоит.
Если у вас есть такой пакет, то
в другом пакете, в который вы установили его как зависимость, вы можете импортировать по "короткому" пути:
// "Короткий" импорт, без него пришлось бы делать что-то вот такое:
// import { whatever } from 'mypackage/dist/whatever/non-index.js';
import { whatever } from 'mypackage/whatever';
---
Если речь идёт о том, чтобы использовать алиасы внутри одного проекта, то следует сконфигурировать алиасы в `vite.config.ts`, документация
вот здесь, выглядеть будет примерно так:
// vite.config.ts
import { fileURLToPath, URL } from 'node:url';
export default defineConfig({
resolve: {
alias: [
{ find: '~components', replacement: fileURLToPath(new URL('./src/components', import.meta.url)) },
],
}),
И в `(js|ts)config.json`, при наличии, добавить:
{
"compilerOptions": {
"paths": {
"~components/*": ["./src/components/*"]
}
}
}