2
votes

Comment corriger l'avertissement d'obsolescence pour Chunk.modulesIterable?

Je suis le mainteneur de external-svg-sprite-loader et j'ai remarqué que lorsque je l'utilise avec webpack 5, je reçois l'avertissement suivant:

[DEP_WEBPACK_CHUNK_MODULES_ITERABLE] DeprecationWarning: Chunk.modulesIterable: Use new ChunkGraph API

La construction réussit mais j'aimerais pouvoir corriger cet avertissement de dépréciation. Cependant, je ne trouve aucune documentation sur modulesIterable ou l'API ChunkGraph. Où devrais-je le chercher et quelle serait une solution potentielle à ce problème?


0 commentaires

3 Réponses :


0
votes

external-svg-sprite-loader utilise Chunk.modulesIterable (ref) qui est maintenant déprécié et remplacé par ChunkGraph

Le paquet a une dépendance homologue de webpack ^ 4.1.0 ( ref ), vous pouvez donc soit rétrograder votre Webpack vers 4. * pour supprimer l'avertissement, soit demander au responsable du paquet d'ajouter la prise en charge de Webpack 5.

Vous pouvez trouver la note d'amortissement officielle ici


1 commentaires

désolé, je suppose que je ne me suis pas expliqué correctement dans ma question. Je suis le responsable du paquet et j'aimerais savoir comment résoudre ce problème car je ne trouve aucune documentation pour ChunkGraph .



1
votes

Si vous souhaitez parcourir les modules en bloc, vous pouvez le faire comme ceci:

compilation.chunks.forEach(chunk => {
  compilation.chunkGraph.getChunkModules(chunk).forEach((module) => {
    const exportInfo = compilation.chunkGraph.moduleGraph.getExportInfo(module);
  })
});

Vous pouvez trouver d'autres méthodes utiles de cette classe dans son code source . Si vous souhaitez manipuler des modules en bloc, il est probablement préférable d'utiliser la classe ModuleGraph . Par exemple:

compilation.chunks.forEach(chunk => {
  compilation.chunkGraph.getChunkModules(chunk).forEach((module) => {
    // module is available here
  })
});


0 commentaires

0
votes

J'ai eu ce problème parce que j'utilisais compilation.hooks.optimizeChunks pour parcourir tous les modules de la compilation. Après quelques recherches, j'ai trouvé que je pouvais utiliser compilation.hooks.optimizeModules pour obtenir le même résultat. Par conséquent, je suis passé à ce dernier et j'ai arrêté de recevoir l'avertissement d'obsolescence mentionné dans ma question. Je dirais que c'est une meilleure solution que d'itérer à travers les modules dans un morceau puisque webpack semble déjà le faire en interne de toute façon.


0 commentaires