2016-09-20 4 views
2

моя команда работает над проектом, используя Angular 1.5. * + Машинопись.Конфигурация TSLint для проекта Angular 1

Может ли кто-нибудь дать мне совет для лучшей конфигурации TSLint для такого проекта, как мой?

Я хочу добавить TSLint config (https://github.com/Microsoft/TypeScript/blob/master/tslint.json) из официального репо TS и с установленными правилами ESLint. https://github.com/Microsoft/TypeScript/blob/master/tslint.json

Будет ли это достаточно? Как вы думаете?

Заранее благодарю вас за ответы.

ответ

1

Будет достаточно? Как вы думаете?

Лично я не включаю его, пока это не станет проблемой. К счастью, у меня есть роскошь, когда мои товарищи по команде уважают и любят, поэтому они знают, что я имею в виду.

Вы можете выбрать, что один или просто пойти с:

{ 
    "extends": "tslint:recommended" 
} 

Чтобы использовать Palantir по умолчанию: https://github.com/palantir/tslint/#configuration

0

Я нахожусь в подобной ситуации. Я использовал tslint-microsoft-contrib в качестве базовой линии.

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

Это определенно помогает во всех отношениях, которые вы ожидаете. Однако некоторые правила необходимо переконфигурировать или отключить для кода TypeScript для AngularJs. Я сделал следующие изменения конфигурации имя-функции, member-ordering, no-import-side-effect и 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, 

В зависимости от того, как вы определяете AngularJs компоненты, вы не можете не устанавливать не-импорт-побочный эффект ложной. Я не видел никакого консенсуса относительно наилучшего способа определения компонентов AngularJs в TypeScript, что является позором, учитывая, что это указано как шаг 1 для перехода от AngularJs к Angular 2+.

К сожалению, это исключает возможность использования пользовательских правил tslint для AngularJs для соответствия лучшим практикам. Я играю с идеей запуска eslint-plugin-angular сгенерированного кода или преобразования этих правил в TypeScript. Но лучшим решением может быть переход на Angular 2+ и использование codelyzer.

 Смежные вопросы

  • Нет связанных вопросов^_^