web-dev-qa-db-fra.com

Comment lintier tout le dossier avec tslint

Est-ce possible de pelucher tout le dossier en utilisant tslint?

En utilisant eslint, il est possible de faire eslint ./src pour valider le dossier entier.

Quand j'essaie de faire la même chose pour tslint - j'obtiens une erreur Error: EISDIR: illegal operation on a directory. Dans leurs exemples sur le site, ils montrent comment valider un seul fichier, ce qui n’est généralement pas le cas.

Est-ce possible de valider mon projet sans des choses supplémentaires comme gulp-tslint, juste en ligne de commande?

58
ValeriiVasin

Vous pouvez utiliser un glob pour lint plusieurs fichiers.

Normalement, si vous ne faites que passer un glob tel quel, votre Shell le développera et transmettra les fichiers résultants à TSLint. Ainsi, par exemple, dans bash 4+ avec l’option globstar activée, vous pouvez procéder comme suit pour réduire tous les .ts et .tsx des dossiers:

tslint src/**/*.ts{,x}

Vous ferez probablement mieux d'utiliser une commande qui fonctionnera de manière cohérente sur toutes les plates-formes et tous les shells. Pour cela, vous pouvez passer le glob entre guillemets. Entre guillemets, le glob sera transmis tel quel à TSLint qui le gérera avec node-glob . Vous pouvez ensuite exécuter la commande suivante pour obtenir les mêmes résultats que ci-dessus:

tslint 'src/**/*.ts?(x)'
92
JKillian

Il y a maintenant un --project option pour cela. Exemple:

tslint --project .

De la docs :

-p, --projet:

Le chemin ou le répertoire contenant un fichier tsconfig.json qui sera utilisé pour déterminer quels fichiers seront lintés. Cet indicateur active également les règles nécessitant le vérificateur de type.

17
Matt Browne

Si votre projet a un tsconfig.ts vous pouvez aproach --project advange.

Dans mon cas, j'ai un projet nativescript qui inclut un tsconfig.ts à la racine du projet, donc j'ai ceci:

enter image description here

Notez que dans json, les répertoires 'node_modules' et 'plateformes' sont exclus. Cela signifie que tous les fichiers du projet vont être mappés à l'exception des répertoires 'node_modules' et 'plateformes'.

J'ai ajouté ces scripts à mon package.json, "tslint" pour consigner les erreurs et "tslint-fix" pour les corriger.

scripts: {
    tslint: "tslint -p tsconfig.json",
    tslint-fix: "tslint --fix -p tsconfig.json"
}