Aliases
An alias is a handy shortcut for your JavaScript imports. This can be a great option if you dislike long relative import paths with many repeating ../
segments. Define an alias to import things directly from some top-level project directory, no matter how deeply nested a file is located.
With an alias, you can import from "$components/SomeComponent.astro"
instead of "../../../../../components/SomeComponent.astro"
.
Adding a custom alias
To add a custom alias to your project, locate your project snowpack.config.mjs
file. This configuration file contains the instructions and configuration for Astro’s internal build tool Snowpack. If you don’t see a snowpack.config.mjs
file at the top-level of your project (inside the same folder as your package.json
), you can create a blank file now.
To add a new import alias, define a new alias
entry:
// snowpack.config.mjs
export default {
alias: {
// Map "$components/*" imports to "src/components/*"
$components: './src/components',
// Map "$/*" imports to "src/*"
$: './src',
// Define your own!
'$my-special-alias': './src/some/special/folder',
},
// ...
};
Once you have defined your alias(es) and restarted Astro (if needed) you can start importing from the alias anywhere in your project:
import MyComponent from '$components/MyComponent.astro';
import mySvgUrl from '$/logo.svg';
You can read more about the alias
configuration in the Snowpack documentation.
Tips & Tricks
- We recommend starting all aliases with the special
$
character. This is not required. - It is common to define a top-level
$
alias for yoursrc
directory. This is not required. - To add VSCode support for you aliases, you will also need to define your aliases in a
tsconfig.json
orjsconfig.json
file via the"paths"
config value. This will enable Intellisense in VSCode and most other text editors. - You don’t need to use an alias with Astro! Some people prefer less magic in their code, and don’t want to bother with extra steps for text editor support.