Je lisais à propos de chemin cartographie dans tsconfig.json
et je voulais l' utiliser pour éviter d' utiliser les chemins laids suivants:
L'organisation du projet est un peu bizarre car nous avons un mono-référentiel qui contient des projets et des bibliothèques. Les projets sont regroupés par entreprise et par navigateur / serveur / universel.
Comment puis-je configurer les chemins au tsconfig.json
lieu de:
import { Something } from "../../../../../lib/src/[browser/server/universal]/...";
Je peux utiliser:
import { Something } from "lib/src/[browser/server/universal]/...";
Quelque chose d'autre sera-t-il nécessaire dans la configuration du webpack? ou est-ce tsconfig.json
assez?
typescript
node-modules
tsconfig
Remo H. Jansen
la source
la source
Réponses:
Cela peut être configuré sur votre fichier tsconfig.json, car il s'agit d'une fonctionnalité TS.
Vous pouvez faire comme ceci:
Gardez à l'esprit que le chemin auquel vous voulez vous référer, il prend votre baseUrl comme base de la route vers laquelle vous pointez et c'est obligatoire comme décrit sur le doc.
Le caractère «@» n'est pas obligatoire.
Une fois que vous l'avez configuré de cette façon, vous pouvez facilement l'utiliser comme ceci:
la seule chose que vous remarquerez peut-être est que l'intellisense ne fonctionne pas dans la dernière version actuelle, je vous suggère donc de suivre une convention d'index pour l'importation / l'exportation de fichiers.
la source
moduleNameMapper
: tsjest # 414Vous pouvez utiliser une combinaison de
baseUrl
etpaths
docs .En supposant que la racine se trouve dans le répertoire le plus
src
élevé (et j'ai lu votre image correctement), utilisezCar
webpack
vous devrez peut-être également ajouter une résolution de module . Carwebpack2
cela pourrait ressembler àla source
Vérifiez ces solutions similaires avec un astérisque
la source
La réponse d'Alejandros a fonctionné pour moi, mais comme j'utilise le
awesome-typescript-loader
avec webpack 4, j'ai également dû ajouter letsconfig-paths-webpack-plugin
à mon fichier webpack.config pour qu'il se résolve correctementla source
Si vous utilisez des chemins, vous devrez changer les chemins absolus en chemins relatifs pour que cela fonctionne après la compilation du typecript en javascript simple en utilisant
tsc
.La solution la plus populaire pour cela a été tsconfig-chemins .
Je l'ai essayé, mais cela n'a pas fonctionné pour moi pour ma configuration compliquée. En outre, il résout les chemins au moment de l'exécution, ce qui signifie une surcharge en termes de taille de package et de performances de résolution.
Donc, j'ai écrit une solution moi-même, tscpaths .
Je dirais que c'est globalement mieux car il remplace les chemins au moment de la compilation. Cela signifie qu'il n'y a pas de dépendance d'exécution ou de surcharge de performances. C'est assez simple à utiliser. Il vous suffit d'ajouter une ligne à vos scripts de construction dans
package.json
.Le projet est assez jeune, il pourrait donc y avoir des problèmes si votre configuration est très compliquée. Cela fonctionne parfaitement pour ma configuration, bien que ma configuration soit assez complexe.
la source
si typescript + webpack 2 + at-loader est utilisé, il y a une étape supplémentaire (la solution de @ mleko ne fonctionnait que partiellement pour moi):
Résolution de chemin avancée dans TypeScript 2.0
la source
Cela fonctionne pour moi:
Cela charge tous les chemins dans tsconfig.json. Un exemple de tsconfig.json:
Assurez-vous que vous disposez à la fois de baseUrl et de chemins pour que cela fonctionne
Et puis vous pouvez importer comme:
la source
Son genre de chemin relatif au lieu du code ci-dessous
Nous pouvons éviter que le "../../../../../" semble étrange et illisible.
Donc, le fichier de configuration Typescript a la même réponse. Spécifiez simplement baseUrl, config s'occupera de votre chemin relatif.
façon de config: fichier tsconfig.json ajoutez les propriétés ci-dessous.
Donc finalement ça ressemblera à ci-dessous
Cela a l'air simple, génial et plus lisible.
la source
Vérifiez l'opération du compilateur en utilisant ceci
J'ai ajouté baseUrl dans le fichier pour un projet comme ci-dessous:
"baseUrl": "src"
Cela fonctionne bien. Ajoutez donc votre répertoire de base pour votre projet.
la source
/
commence à partir de la racine uniquement, pour obtenir le chemin relatif que nous devrions utiliser./
ou../
la source
Il semble qu'il y ait eu une mise à jour de React qui ne vous permet pas de définir le
"paths"
dans letsconfig.json
anylonger.Nicely React affiche juste un avertissement:
puis met à jour votre
tsconfig.json
et supprime toute la"paths"
section pour vous. Il y a un moyen de contourner cette courseCela éjecte tous les
create-react-scripts
paramètres en ajoutantconfig
etscripts
répertoires et build / fichiers de configuration dans votre projet. Cela permet également beaucoup plus de contrôle sur la façon dont tout est construit, nommé, etc. en mettant à jour le{project}/config/*
fichiers.Puis mettez à jour votre
tsconfig.json
la source