Aller au contenu principal
Version : 2.x

Ressources statiques

Les ressources statiques sont les fichiers non codés qui sont directement copiés dans le résultat de la construction. Elles incluent des images, des feuilles de style, des favicons, des polices, etc.

Par dĂ©faut, il vous est suggĂ©rĂ© de placer ces ressources dans le dossier static. Chaque fichier que vous mettez dans ce rĂ©pertoire sera copiĂ© Ă  la racine du rĂ©pertoire build gĂ©nĂ©rĂ© avec la hiĂ©rarchie des rĂ©pertoires prĂ©servĂ©e. Par exemple : si vous ajoutez un fichier nommĂ© sun.jpg au dossier statique, il sera copiĂ© dans build/sun.jpg.

Cela signifie que :

  • pour le site baseUrl: '/', l'image /static/img/docusaurus.png sera servie grĂące Ă  /img/docusaurus.png.
  • pour le site baseUrl: '/subpath/', l'image /static/img/docusaurus.png sera servie grĂące Ă  /subpath/img/docusaurus.png.

Vous pouvez personnaliser les sources des rĂ©pertoires statiques dans docusaurus.config.js. Par exemple, nous pouvons ajouter public comme autre chemin possible :

docusaurus.config.js
module.exports = {
title: 'Mon site',
staticDirectories: ['public', 'static'],
// ...
};

Maintenant, tous les fichiers dans public ainsi que static seront copiés dans la sortie de la compilation.

RĂ©fĂ©rencement de votre ressource statique​

En JSX​

En JSX, vous pouvez référencer les ressources du dossier static dans votre code en utilisant des URL absolues, mais ce n'est pas idéal car changer le baseUrl du site cassera ces liens. Pour l'image <img src="/img/docusaurus.png" /> servie par https://example.com/test, le navigateur essaiera de la résoudre à partir de la racine de l'URL, c'est-à-dire en tant que https://example.com/img/docusaurus.png, ce qui échouera car elle est en fait servie par https://example.com/test/img/docusaurus.png.

Vous pouvez utiliser import() ou require() pour la ressource statique (recommandé) ou utilisez la fonction utilitaire useBaseUrl : les deux solutions vont préfixez pour vous baseUrl aux chemins.

Exemples :

MyComponent.js
import DocusaurusImageUrl from '@site/static/img/docusaurus.png';

<img src={DocusaurusImageUrl} />;
MyComponent.js
<img src={require('@site/static/img/docusaurus.png').default} />
MyComponent.js
import useBaseUrl from '@docusaurus/useBaseUrl';

<img src={useBaseUrl('/img/docusaurus.png')} />;

Vous pouvez également importer des fichiers SVG : ils seront transformés en composants React.

MyComponent.js
import DocusaurusLogoWithKeytar from '@site/static/img/docusaurus_keytar.svg';

<DocusaurusLogoWithKeytar title="Docusaurus Logo" className="logo" />;

En Markdown​

En Markdown, vous pouvez vous en tenir Ă  l'utilisation de chemins absolus lorsque vous Ă©crivez des liens ou des images en syntaxe Markdown car Docusaurus les traite comme des appels require au lieu d'URL lors de l'analyse du Markdown. Consultez Ressources statiques du Markdown.

Vous Ă©crivez un lien comme ceci : [TĂ©lĂ©charger ce document](/files/note.docx)

Docusaurus change cela en : <a href={require('static/files/note.docx')}>TĂ©lĂ©charger ce document</a>
Ă  l'utilisation de la syntaxe Markdown

Docusaurus n'analysera que les liens qui sont dans la syntaxe Markdown. Si vos références de ressources utilisent la balise JSX <a> / <img>, rien ne sera fait.

En CSS​

En CSS, la fonction url() est couramment utilisĂ©e pour rĂ©fĂ©rencer des ressources comme des polices et des images. Pour rĂ©fĂ©rencer une ressource statique, utilisez des chemins absolus :

@font-face {
font-family: 'Caroline';
src: url('/font/Caroline.otf');
}

La ressource static/font/Caroline.otf sera chargée par le bundler.

note importante

Un point important Ă  retenir : ne codez jamais en dur votre URL de base ! L'URL de base est considĂ©rĂ©e comme un dĂ©tail d'implĂ©mentation et doit ĂȘtre facilement modifiable. Tous les chemins, mĂȘme lorsqu'ils ressemblent Ă  des slugs d'URL, sont en fait des chemins de fichier.

Si le modĂšle mental des slugs d'URL vous paraĂźt plus comprĂ©hensible, voici une rĂšgle gĂ©nĂ©rale :

  • Faites comme si vous aviez une URL de base comme /test/ lorsque vous Ă©crivez du JSX afin de ne pas utiliser un chemin d'URL absolu comme src="/img/thumbnail.png" mais plutĂŽt un require de la ressource.
  • Faites comme si c'Ă©tait / lorsque vous Ă©crivez du Markdown ou du CSS afin de toujours utiliser des chemins absolus sans l'URL de base.

Mises en garde​

Gardez Ă  l'esprit que :

  • Par dĂ©faut, aucun des fichiers du dossier static ne sera post-traitĂ©, hachĂ© ou minifiĂ©.
    • Toutefois, comme nous l'avons dĂ©montrĂ© ci-dessus, nous sommes gĂ©nĂ©ralement en mesure de les convertir en appels require pour vous afin qu'ils soient traitĂ©s. C'est une bonne chose pour une mise en cache agressive et une meilleure expĂ©rience utilisateur.
  • Les fichiers manquants rĂ©fĂ©rencĂ©s via des chemins absolus codĂ©s en dur ne seront pas dĂ©tectĂ©s au moment de la compilation, et entraĂźneront une erreur 404.
  • Par dĂ©faut, les pages GitHub exĂ©cutent les fichiers publiĂ©s via Jekyll. Puisque Jekyll va se dĂ©barrasser de tous les fichiers qui commencent par _, il est recommandĂ© de dĂ©sactiver Jekyll en ajoutant un fichier vide nommĂ© .nojekyll dans votre rĂ©pertoire static si vous utilisez les pages GitHub pour l'hĂ©bergement.