Référence des importations
Astro supporte la plupart des ressources statiques sans aucune configuration requise. Vous pouvez utiliser la directive import
n’importe où dans votre projet JavaScript (y compris votre frontmatter d’Astro) et Astro inclura une copie construite et optimisée de cette ressource statique dans votre build final. @import
est également prise en charge dans les balises CSS et <style>
.
Types de fichiers supportés
Titre de la section Types de fichiers supportésLes types de fichiers suivants sont pris en charge par Astro :
- Composants Astro (
.astro
) - Markdown (
.md
,.markdown
, etc.) - JavaScript (
.js
,.mjs
) - TypeScript (
.ts
) - Paquets NPM
- JSON (
.json
) - CSS (
.css
) - Modules CSS (
.module.css
) - Images et actifs (
.svg
,.jpg
,.png
, etc.)
De plus, vous pouvez étendre Astro pour ajouter le support de différents Frameworks UI comme React, Svelte et Vue. Vous pouvez également installer l’intégration Astro MDX ou l’intégration Astro Markdoc pour utiliser les fichiers .mdx
ou .mdoc
dans votre projet.
Les fichiers dans public/
Titre de la section Les fichiers dans public/Vous pouvez placer n’importe quelle ressource statique dans le répertoire public/
de votre projet, et Astro le copiera directement dans votre version finale sans y toucher. Les fichiers dans le répertoire public/
ne sont pas construits ou regroupés par Astro, ce qui signifie que n’importe quel type de fichier est supporté.
Vous pouvez référencer un fichier public/
par un chemin d’URL directement dans vos modèles HTML.
Déclarations d’importation
Titre de la section Déclarations d’importationAstro utilise ESM, la même syntaxe import
et export
que celle utilisée dans le navigateur.
JavaScript
Titre de la section JavaScriptJavaScript peut être importé en utilisant la syntaxe normale d’importation et d’exportation d’ESM.
Un framework UI approprié (React, Preact ou Solid) est requis pour restituer les fichiers JSX/TSX.
Utilisez les extensions .jsx
/.tsx
le cas échéant, car Astro ne prend pas en charge JSX dans les fichiers .js
/.ts
.
TypeScript
Titre de la section TypeScriptAstro comprend un support intégré pour [TypeScript] (https://www.typescriptlang.org/). Vous pouvez importer des fichiers .ts
et .tsx
directement dans votre projet Astro, et même écrire du code TypeScript directement dans votre script de composant Astro et dans n’importe quelle balise de scripts.
Astro n’effectue aucune vérification de type lui-même. La vérification de type doit être prise en charge en dehors d’Astro, soit par votre IDE, soit par un script séparé. Pour vérifier le type des fichiers Astro, la commande astro check
est fournie.
Selon les règles de résolution des modules TypeScript, les extensions de fichiers .ts
et .tsx
ne doivent pas être utilisées lors de l’importation de fichiers TypeScript. À la place, utilisez les extensions de fichiers .js
/.jsx
ou omettez complètement l’extension de fichier.
Paquets NPM
Titre de la section Paquets NPMSi vous avez installé un paquet NPM, vous pouvez l’importer dans Astro.
Si un paquet a été publié en utilisant un ancien format, Astro essaiera de convertir le paquet en ESM pour que les déclarations import
fonctionnent. Dans certains cas, vous devrez ajuster votre config vite
pour que cela fonctionne.
Certains paquets s’appuient sur un environnement de navigation. Les composants Astro fonctionnant sur le serveur, l’importation de ces paquets dans la partie frontale peut conduire à des erreurs.
Astro prend en charge l’importation de fichiers JSON directement dans votre application. Les fichiers importés retournent l’objet JSON complet dans l’importation par défaut.
Astro prend en charge l’importation de fichiers CSS directement dans votre application. Les styles importés ne nécessitent pas d’exportations, mais l’importation d’un style ajoutera automatiquement ce style à la page. Cela fonctionne pour tous les fichiers CSS par défaut, et peut prendre en charge les langages CSS compilés comme Sass et Less via des plugins.
Modules CSS
Titre de la section Modules CSSAstro supporte les modules CSS en utilisant la convention de dénomination [nom].module.css
. Comme tout fichier CSS, l’importation d’un module CSS l’appliquera automatiquement à la page. Cependant, les modules CSS exportent un objet spécial par défaut styles
qui fait correspondre vos noms de classe originaux à des identifiants uniques.
Les modules CSS vous aident à renforcer le cadrage et l’isolation des composants sur le frontend grâce à des noms de classe générés de manière unique pour vos feuilles de style.
Autres ressources
Titre de la section Autres ressourcesToutes les autres ressources qui ne sont pas explicitement mentionnés ci-dessus peuvent être importés via l’import
ESM et renverront une référence URL à la ressource finale construite. Cela peut être utile pour référencer des ressources non-JS par URL, comme créer un élément image avec un attribut src
pointant vers cette image.
Il peut également être utile de placer des images dans le dossier public/
comme expliqué sur la page de structure du projet.
?url
ou ?raw
) dans le guide de gestion des ressources statiques de Vite
L’ajout d’un texte alt aux balises <img>
est encouragé pour des raisons d’accessibilité ! N’oubliez pas d’ajouter un attribut alt="a helpful description"
à vos éléments d’image. Vous pouvez laisser l’attribut vide si l’image est purement décorative.
Un alias est une façon de créer des raccourcis pour vos imports.
Les alias peuvent aider à améliorer l’expérience de développement dans les codebases avec de nombreux dossiers ou importations relatives.
Dans cet exemple, un développeur devra comprendre la relation de l’arborescente entre src/pages/about/company.astro
, src/components/controls/Button.astro
, et src/assets/logo.png
. Et si le fichier company.astro
devait être déplacé, ces importations devraient également être mises à jour.
Vous pouvez ajouter des alias d’importation dans tsconfig.json
.
Assurez-vous que compilerOptions.baseUrl
est défini pour que les chemins aliasés puissent être résolus.
Le serveur de développement redémarrera automatiquement après ce changement de configuration. Vous pouvez maintenant importer en utilisant les alias n’importe où dans votre projet :
Ces alias sont également intégrés automatiquement dans VS Code et d’autres éditeurs de code.
import.meta.glob()
Titre de la section import.meta.glob()L’utilitaire import.meta.glob()
de Vite est un moyen d’importer plusieurs fichiers à la fois en utilisant des modèles glob pour trouver des chemins de fichiers correspondants.
import.meta.glob()
prend un modèle glob relatif correspondant aux fichiers locaux que vous souhaitez importer comme paramètre. Il renvoie un tableau des exportations de chaque fichier correspondant. Pour charger tous les modules correspondants à l’avance, passez { eager: true }
comme deuxième argument :
Les composants Astro importés avec import.meta.glob
sont de type AstroInstance
. Vous pouvez effectuer le rendu de chaque instance de composant en utilisant sa propriété default
:
Valeurs prises en charge
Titre de la section Valeurs prises en chargeLa fonction import.meta.glob()
de Vite ne prend en charge que les chaînes littérales statiques. Elle ne prend pas en charge les variables dynamiques ni l’interpolation de chaîne de caractères.
Une solution de contournement courante consiste à importer un ensemble de fichiers plus grand qui inclut tous les fichiers dont vous avez besoin, puis à les filtrer :
Utilitaires de type d’importation
Titre de la section Utilitaires de type d’importationFichiers Markdown
Titre de la section Fichiers MarkdownLes fichiers Markdown chargés avec import.meta.glob()
renvoient l’interface MarkdownInstance
suivante :
Vous pouvez éventuellement fournir un type pour la variable frontmatter
à l’aide d’un générique TypeScript.
Fichiers Astro
Titre de la section Fichiers AstroLes fichiers Astro ont l’interface suivante :
Autres fichiers
Titre de la section Autres fichiersD’autres fichiers peuvent avoir différentes interfaces, mais import.meta.glob()
accepte un générique TypeScript si vous savez exactement ce que contient un type de fichier non reconnu.
Patterns globaux
Titre de la section Patterns globauxUn pattern global est un chemin d’accès à un fichier qui prend en charge les caractères génériques spéciaux. Il est utilisé pour référencer plusieurs fichiers dans votre projet en même temps.
Par exemple, le pattern global ./pages/**/*.{md,mdx}
commence dans le sous-répertoire pages, et regarde dans tous ses sous-répertoires (/**
), et correspond à tous les noms de fichier (/*
) qui finissent soit par .md
ou .mdx
(.{md,mdx}
).
Patterns globaux dans Astro
Titre de la section Patterns globaux dans AstroPour être utilisé avec import.meta.glob()
, le modèle glob doit être une chaîne littérale et ne peut contenir aucune variable.
En outre, les motifs globaux doivent commencer par l’un des éléments suivants :
./
(pour commencer dans le répertoire actuel)../
(pour démarrer dans le répertoire parent)/
(pour démarrer à la racine du projet)
En savoir plus sur la syntaxe des motifs globaux.
import.meta.glob()
vs getCollection()
Titre de la section import.meta.glob() vs getCollection()Les collections de contenu fournissent une API getCollection()
pour charger plusieurs fichiers au lieu de import.meta.glob()
. Si vos fichiers de contenu (par exemple Markdown, MDX, Markdoc) sont situés dans des collections dans le répertoire src/content/
, utilisez getCollection()
pour interroger une collection et retourner les entrées de la collection.
Astro permet de charger des fichiers WASM directement dans votre application en utilisant l’API WebAssembly
du navigateur.
Node Builtins
Titre de la section Node BuiltinsNous encourageons les utilisateurs d’Astro à éviter les “Built-in” Node.js (fs
, path
, etc.) dans la mesure du possible. Astro est compatible avec de nombreux moteurs d’exécution utilisant des adaptateurs. Cela inclut Deno et Cloudflare Workers qui ne supportent pas les modules intégrés de Node tels que fs
.
Notre objectif est de fournir des alternatives Astro aux composants Node.js les plus courants. Cependant, aucune alternative de ce type n’existe aujourd’hui. Donc, si vous avez vraiment besoin d’utiliser ces modules Built-in, nous ne voulons pas vous en empêcher. Astro supporte les modules Built-in de Node.js en utilisant le préfixe node:
de Node. Si vous voulez lire un fichier, par exemple, vous pouvez le faire comme ceci :
Extension de la prise en charge des types de fichiers
Titre de la section Extension de la prise en charge des types de fichiersAvec Vite et les plugins Rollup compatibles, vous pouvez importer des types de fichiers qui ne sont pas pris en charge nativement par Astro. Pour savoir où trouver les plugins dont vous avez besoin, consultez la section Finding Plugins de la documentation Vite.
Référez-vous à la documentation de votre plugin pour connaître les options de configuration et savoir comment l’installer correctement.