Maison  >  Article  >  interface Web  >  Ts transpilant les instructions de chemin absolu dans votre package npm

Ts transpilant les instructions de chemin absolu dans votre package npm

WBOY
WBOYoriginal
2024-08-29 12:41:52741parcourir

Aujourd'hui, j'ai été confronté à une situation Typescript complexe liée à une bibliothèque, des fichiers .d.ts et des chemins relatifs.


Nous publions une bibliothèque de composants React (y compris les types) sur npm.

Nos projets front-end incluent cette bibliothèque comme tout autre package npm.

Habituellement, nos projets front-end ont dans leur tsconfig.json l'option "skipLibCheck: true"

Ts transpiling absolute path statements in your npm package

Une de nos applications n'avait pas ce drapeau (par défaut, ce drapeau est désactivé et honnêtement, je ne comprends pas qui voudrait ce comportement)

Ts transpiling absolute path statements in your npm package


le fait est que le drapeau n'était pas là et nous obtenions une erreur ts :

Ts transpiling absolute path statements in your npm package

Et c'était une erreur légitime : le fichier distribué de notre bibliothèque essayait d'importer quelque chose à partir d'un chemin absolu

import { Foo } from 'absolutePath';

cette ligne a du sens dans la bibliothèque elle-même mais pas dans node_modules/bla/bla/bla

C'est vrai : est-ce que ce Chemin absolu est ici avec nous ?

Ts transpiling absolute path statements in your npm package

En creusant dans le dossier dist/, j'ai vérifié que certains fichiers de composants résultants étaient correctement transpilés en utilisant des chemins relatifs :

Ts transpiling absolute path statements in your npm package


MOMENT DE PANIQUE : Pourquoi certains fichiers .d.ts transpilés utilisent des chemins absolus tandis que d'autres utilisent des chemins relatifs ????


Plusieurs articles et problèmes de Stack Overflow, fils de discussion et discussions sur GitHub plus tard (j'ignorerai ce qui n'a pas fonctionné)

J'ai remarqué cet avertissement d'invitation au moment de la construction :

Export of «module» was reexported through «file» 
while both modules are dependencies of each other 
and will end up in different chunks by Rollup.

Ts transpiling absolute path statements in your npm package

donc... Dépendances circulaires ça l'est.


J'ai résolu les dépendances circulaires dans nos instructions d'importation et tout va bien maintenant.

TL;DR

Si vous rencontrez des problèmes avec Ts ? transpiler les instructions de chemin absolu au lieu des chemins relatifs dans votre bibliothèque,
ce qui entraîne une erreur Ts dans l'application client, cela pourrait être dû à une dépendance circulaire dans votre code source.

--
merci d'avoir lu

Mon fil de discussion original chez X

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn