Looks like no additional plugins needed (vite 3.1.0), configuration vite.config.js
:
import { defineConfig } from 'vite';
import * as path from 'path';
export default defineConfig({
...
resolve: {
alias: [
{ find: '@', replacement: path.resolve(__dirname, 'src') },
],
},
...
});
tsconfig.json
{
"compilerOptions": {
...
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"],
},
...
},
...
}
Also don't forget about linting, eslint also should know about aliases. Just install eslint plugin eslint-import-resolver-alias
and define it in eslint config
.eslintrc.js
module.exports = {
...
settings: {
'import/resolver': {
node: {
extensions: ['.js', '.vue', '.ts', '.d.ts'],
},
alias: {
extensions: ['.vue', '.js', '.ts', '.scss', '.d.ts'],
map: [
['@/components', './src/components'],
['@/pages', './src/pages'],
['@/router', './src/router'],
['@/store', './src/store'],
['@/styles', './src/styles'],
['@/types', './src/types'],
['@/utils', './src/utils'],
],
},
},
},
...
};
As you can see I defined aliases for every folder, it's because i got problem with alias for whole folder src
, it throw error for packages started with @
symbol - can't resolve package, but current way works well.