Introduction/Construire votre application/Configuration/Import absolus et alias de chemins de modules
Import absolus et alias de chemins de modules
Exemples
Next.js prend en charge nativement les options "paths"
et "baseUrl"
des fichiers tsconfig.json
et jsconfig.json
.
Ces options vous permettent d'aliasser des répertoires du projet vers des chemins absolus, facilitant ainsi l'importation de modules. Par exemple :
// avant
import { Button } from '../../../components/button'
// après
import { Button } from '@/components/button'
Bon à savoir :
create-next-app
vous proposera de configurer ces options automatiquement.
Imports absolus
L'option de configuration baseUrl
vous permet d'importer directement depuis la racine du projet.
Exemple de configuration :
{
"compilerOptions": {
"baseUrl": "."
}
}
import Button from 'components/button'
export default function HomePage() {
return (
<>
<h1>Hello World</h1>
<Button />
</>
)
}
import Button from 'components/button'
export default function HomePage() {
return (
<>
<h1>Hello World</h1>
<Button />
</>
)
}
Alias de modules
En plus de configurer le chemin baseUrl
, vous pouvez utiliser l'option "paths"
pour "aliasser" des chemins de modules.
Par exemple, la configuration suivante mappe @/components/*
vers components/*
:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/components/*": ["components/*"]
}
}
}
import Button from '@/components/button'
export default function HomePage() {
return (
<>
<h1>Hello World</h1>
<Button />
</>
)
}
import Button from '@/components/button'
export default function HomePage() {
return (
<>
<h1>Hello World</h1>
<Button />
</>
)
}
Chaque chemin "paths"
est relatif à l'emplacement baseUrl
. Par exemple :
// tsconfig.json ou jsconfig.json
{
"compilerOptions": {
"baseUrl": "src/",
"paths": {
"@/styles/*": ["styles/*"],
"@/components/*": ["components/*"]
}
}
}
// pages/index.js
import Button from '@/components/button'
import '@/styles/styles.css'
import Helper from 'utils/helper'
export default function HomePage() {
return (
<Helper>
<h1>Hello World</h1>
<Button />
</Helper>
)
}