reactjs - TSLint - Prevenindo erro: A chave não está ordenada alfabeticamente
Estou fazendo um aplicativo de teste com Ionic2/Cordova/Typescript/Angular. Estou usando tslint 5.6.0.
Estou usando o seguinte módulo: https://www.npmjs.com/package/tslint
Focando em apenas um arquivo...
ao verificar o seguinte arquivo com lint:
import { NgModule, ErrorHandler } from "@angular/core";
import { BrowserModule } from "@angular/platform-browser";
import { IonicApp, IonicModule, IonicErrorHandler } from "ionic-angular";
import { MyApp } from "./app.component";
import { AboutPage } from "../pages/about/about";
import { ContactPage } from "../pages/contact/contact";
import { HomePage } from "../pages/home/home";
import { TabsPage } from "../pages/tabs/tabs";
import { StatusBar } from "@ionic-native/status-bar";
import { SplashScreen } from "@ionic-native/splash-screen";
@NgModule( {
declarations: [
MyApp,
AboutPage,
ContactPage,
HomePage,
TabsPage,
],
imports: [
BrowserModule,
IonicModule.forRoot( MyApp ),
],
bootstrap: [ IonicApp ],
entryComponents: [
MyApp,
AboutPage,
ContactPage,
HomePage,
TabsPage,
],
providers: [
StatusBar,
SplashScreen,
{ provide: ErrorHandler, useClass: IonicErrorHandler },
],
})
export class AppModule { }
Eu obtenho:
The key 'bootstrap' is not sorted alphabetically
RuleFailurePosition { position: 790, lineAndCharacter: { line: 25, character: 4 } }
RuleFailurePosition { position: 799, lineAndCharacter: { line: 25, character: 13 } }
Estou usando as seguintes opções:
{
"extends": "tslint:recommended",
"rules": {
"no-duplicate-variable": true,
"max-line-length": {
"options": [120]
},
"ordered-imports": false,
"new-parens": true,
"no-arg": true,
"no-bitwise": true,
"no-conditional-assignment": true,
"no-consecutive-blank-lines": false,
"no-console": {
"options": [
"debug",
"info",
"log",
"time",
"timeEnd",
"trace"
]
}
},
"jsRules": {
"max-line-length": {
"options": [120]
}
}
}
Qual opção eu preciso configurar no TSLint para evitar que esse erro apareça?
Resposta #1
A regra que está falhando aqui parece ser object-literal-sort-keys.
Você deve ser capaz de desativá-lo na seção regras do seu arquivo de configuração adicionando:
"object-literal-sort-keys": false
Você pode encontrar todas as regras do tslint aqui.
Resposta #2
Para qualquer pessoa que esteja vindo para cá fazendo uma migração para TypeScript a partir de JavaScript, ou que simplesmente tenha um código misto de JavaScript + TypeScript, você pode definir esta regra também dentro de 'jsRules', ou seja, para se livrar deste erro, quando você tiver declarações de console definidas dentro de arquivos JavaScript (não TypeScript).
//tslint.json
{
"extends": ["tslint:recommended", "tslint-react", "tslint-config-prettier"],
"rules": {
"object-literal-sort-keys": false //Disable for typescript
},
"jsRules": {
"object-literal-sort-keys": false //Disable for javascript
}
}
