2016-09-20 5 views
2

Mein Team arbeitet an einem Projekt mit Angular 1.5. * + Typescript.TSLint Konfiguration für Angular 1 Projekt

Kann mir jemand Tipps für die beste TSLint-Konfiguration für ein solches Projekt geben?

Ich möchte jetzt TSLint Config (https://github.com/Microsoft/TypeScript/blob/master/tslint.json) aus offiziellen TS Repo und mit ESlint Regeln gesetzt. https://github.com/Microsoft/TypeScript/blob/master/tslint.json

Wird es genug sein? Was denken Sie?

Vielen Dank im Voraus für Ihre Antworten.

Antwort

1

Wird es genug sein? Was denken Sie?

Ich persönlich schalte es nicht ein, bis es ein Problem wird. Glücklicherweise habe ich den Luxus, dass meine Teamkollegen Respekt und Liebe haben, also wissen sie, dass es mir gut geht.

können Sie wählen, dass eine oder nur mit gehen:

{ 
    "extends": "tslint:recommended" 
} 

palantir Standardeinstellung zu verwenden: https://github.com/palantir/tslint/#configuration

0

ich in einer ähnlichen Situation bin. Ich habe tslint-microsoft-contrib als Basis verwendet.

"extends": "tslint-microsoft-contrib", 

Es hilft definitiv in allen Arten, die Sie erwarten würden. Einige Regeln müssen jedoch für AngularJs TypeScript-Code neu konfiguriert oder deaktiviert werden. Ich habe die folgenden Konfigurationsänderungen an Funktionsnamen, member-ordering, no-import-side-effect und no-unsafe-any:

"function-name": [ 
    true, 
    { 
    // allow public methods to start with $ for $onChanges 
    // and other Angular lifecycle hooks 
    "method-regex": "^[a-z$][\\w\\d]+$", 

    // otherwise unchanged 
    "private-method-regex": "^[a-z][\\w\\d]+$", 
    "protected-method-regex": "^[a-z][\\w\\d]+$", 
    "static-method-regex": "^[A-Z_\\d]+$", 
    "function-regex": "^[a-z][\\w\\d]+$" 
    } 
], 

// Variant ordering that places public statics before constructor 
// So we can place AngularJs $inject just before the constructor 
"member-ordering": [ 
    true, 
    { 
    "order": [ 
     "public-instance-field", 
     "protected-instance-field", 
     "private-instance-field", 
     "public-static-field", 
     "protected-static-field", 
     "private-static-field", 
     "constructor", 
     "public-static-method", 
     "protected-static-method", 
     "private-static-method", 
     "public-instance-method", 
     "protected-instance-method", 
     "private-instance-method" 
    ] 
    } 
], 

// angular.module(...).component(...) is a side-effect 
"no-import-side-effect": false, 

// ng.IController, among others in @types/angular, uses "any" 
// and is flagged by this rule 
"no-unsafe-any": false, 

Je nachdem, wie Sie AngularJS Komponenten definieren, können Sie nicht ohne-Import-Nebenwirkung auf false gesetzt müssen. Ich habe keinen Konsens darüber gefunden, wie AngularJs-Komponenten in TypeScript am besten definiert werden können. Dies ist eine Schande, da dies als Schritt 1 für die Migration von AngularJs zu Angular 2+ aufgeführt ist.

Leider fehlt hier die Möglichkeit, benutzerdefinierte tslint Regeln für AngularJs mit Best Practices übereinstimmen. Ich spiele mit der Idee, eslint-plugin-angular für den generierten Code auszuführen oder diese Regeln in TypeScript zu konvertieren. Die bessere Lösung könnte jedoch sein, zu Angular 2+ zu migrieren und codelyzer zu verwenden.

Verwandte Themen