Storyblok

assetsInclude
Importer une ressource statique retournera l’URL publique résolue où elle est servie :
import imgUrl from './img.png'
document.getElementById('hero-img').src = imgUrl
Par exemple, imgUrl
sera /img.png
pendant le développement, et deviendra /assets/img.2d8efhg.png
lors de la compilation en production.
Le comportement est similaire au file-loader
de webpack. La différence est que l’import peut utiliser au choix un chemin absolu (par rapport à la racine du projet pendant le développement) ou un chemin relatif.
Les références url()
dans le CSS sont traitées de la même façon.
Si vous utilisez le plugin Vue, les références à des ressources dans le template d’un composant à fichier unique (SFC) sont convertis en imports.
Les types de fichiers les plus courants pour les images, les medias, ou les polices de caractères sont détectés automatiquement comme étant des ressources. Vous pouvez étendre la liste interne avec l’option assetsInclude
.
Les ressources référencées sont incluses au graphe des ressources de compilation, se voient assigner un nom de fichier haché, et peuvent être transformées par des plugins d’optimisation.
Les ressources plus petites (en octets) que l’option assetsInlineLimit
seront mises inline comme URLs de données base64.
Les ressources qui ne sont pas incluses dans la liste interne ou dans assetsInclude
peuvent être importées en tant qu’URL explicitement en utilisant le suffixe ?url
. C’est utile pour importer des paint worklets Houdini, par exemple.
import workletURL from 'extra-scalloped-border/worklet.js?url'
CSS.paintWorklet.addModule(workletURL)
Les ressources peuvent être importées en tant que chaînes de caractères à l’aide du suffixe ?raw
.
import shaderString from './shader.glsl?raw'
Les scripts peuvent être importés en tant que web workers à l’aide des suffixes ?worker
et ?sharedworker
.
// il sera inclus à un morceau (chunk) différent pour la compilation de
// production
import Worker from './shader.js?worker'
const worker = new Worker()
// worker partagé
import SharedWorker from './shader.js?sharedworker'
const sharedWorker = new SharedWorker()
// mis inline en chaînes de caractères base64
import InlineWorker from './shader.js?worker&inline'
Lisez la section Web workers pour plus de détails.
public
#Si vous avez des ressources :
robots.txt
),alors vous pouvez les placer dans le répertoire spécial public
à la racine de votre projet. Les ressources dans ce répertoire seront servies à la racine /
pendant le développement, et copiées à la racine du répertoire dist
telles quelles lors de la compilation.
Le répertoire par défaut est <racine>/public
, mais cela peut-être modifié à l’aide de l’option publicDir
.
Notez que :
public
avec des chemins absolus. Par exemple, public/icon.png
devrait être référencé dans le code source en tant que /icon.png
.public
ne peuvent pas être importées dans le JavaScript.import.
const imgUrl = new URL('./img.png', import.meta.url).href
document.getElementById('hero-img').src = imgUrl
Cela fonctionne nativement avec les navigateurs modernes — en fait, Vite n’a pas du tout besoin de traiter ce code pour le développement !
Ce pattern fonctionne aussi avec une URL dynamique usant d’un littéral de gabarit (template literal) :
function getImageUrl(name) {
return new URL(`./dir/${name}.png`, import.meta.url).href
}
Pendant la compilation de production, Vite fera les transformations nécessaires pour que les URLs pointent toujours au bon endroit même après le bundling et le hachage des ressources.
Note : Ne fonctionne pas avec le rendu côté serveur (SSR)
Ce pattern ne fonctionnera pas si vous utilisez Vite pour du rendu côté serveur, parce qu’import.
a une sémantique différente dans le navigateur et dans Node.js. Le bundle serveur ne peut de toute façon pas déterminer l’URL cliente en amont.