web-dev-qa-db-fra.com

les chemins tsconfig ne fonctionnent pas

J'essaie de faire quelque chose de très similaire à exemple de chemin jquery dans la documentation, mais TS continue de lancer TS2307 (webpack compile très bien):

"compilerOptions": {
    "baseUrl": "./src",
    "paths": {
        "@client": [
            "client",
        ],
        "@suir": [
            "../node_modules/semantic-ui-react/dist/commonjs", // not working
        ],
    },
    // …
},
"include": [
    "*.d.ts",
    "client/**/*",
    "../node_modules/semantic-ui-react", // is this necessary?
],

Modification de baseUrl en "." et la mise à jour includes et paths ne fait aucune différence (@client continue de fonctionner et @suir ne fonctionne toujours pas).

En changeant "@suir" à "@suir/" ou "@suir/*" (et en ajoutant /* à sa valeur) ne fait également aucune différence.


La raison pour laquelle je fais cela est de simplifier mes importations (je les spécifie explicitement au lieu d'extraire les exportations nommées du bundle afin de réduire la taille de mon bundle fournisseur - économise environ 1 Mo):

import Button from 'semantic-ui-react/dist/commonjs/elements/Button'; // works

import Button from '@suir/elements/Button'; // not found
10
jacob

Je ne sais pas pourquoi cela fonctionne maintenant la onzième fois que j'ai essayé (mais pas les 10 premiers), mais le /* semble être la sauce secrète, et l'exemple dans les documents pointe apparemment vers un fichier spécifique (et l'extension de fichier est omise).

{
    "compilerOptions": {
        "baseUrl": "./src",
        "moduleResolution": "node", // was not set before, but is the default
        "paths": {
            "@client/*": [
                "client/*",
            ],
            "@suir/*": [ // notice the `/*` at the end
                "../node_modules/semantic-ui-react/dist/commonjs/*", // notice the `/*`
            ],
        },
        // …
    },
    "include": [
        "./src/client/**/*",
    ],
}
10
jacob