Lining TypeScript souborů v Ember.js

Máte aplikaci Ember.js napsanou v TypeScript, ale nejste si jisti, jak získat eslint hrát dobře se soubory TypeScript? Přečtěte si tento tutoriál a zjistěte, jak na to.

Nejprve vytvořte novou aplikaci Ember a okamžitě nainstalujme TypeScript.

ember new my-app
ember install ember-cli-typescript@latest

Nyní máme zcela novou aplikaci Ember, která je připravena pro kód TypeScript. Po vygenerování některých souborů TypeScript si ale brzy uvědomíte, že zapsání zjevně chybného kódu TypeScript do těchto souborů nevede k žádným běžným zprávám eslint, které dostáváme z .js soubory.

Abychom to napravili, musíme nainstalovat analyzátor TypeScript a plugin a nechat eslint vědět, že chceme použít tuto vlastní konfiguraci. Děláme to takto:

npm install --save-dev @typescript-eslint/parser @typescript-eslint/eslint-plugin

Tento příkaz nainstaluje dva TypeScript eslint balíčky do vaší aplikace. Nyní zbývá pouze aktualizovat váš eslint konfigurační soubor, aby mohl tyto balíčky používat. Ve standardní aplikaci Ember je tento soubor umístěn na adrese /.eslintrc.js .

Měníme zde pouze tři řádky – stačí nám říct eslint že máme vlastní analyzátor a další plugin, který chceme použít:

// .eslintrc.js

module.exports = {
  root: true,
- parser: 'babel-eslint',
+ parser: '@typescript-eslint/parser',
  parserOptions: {
    ecmaVersion: 2018,
    sourceType: 'module',
    ecmaFeatures: {
      legacyDecorators: true,
    },
  },
- plugins: ['ember'],
+ plugins: ['ember', '@typescript-eslint'],
  extends: [
    'eslint:recommended',
    'plugin:ember/recommended',
    'plugin:prettier/recommended',
+   'plugin:@typescript-eslint/recommended',
  ],
  ...
};

První změna zamění standardní babel-eslint parser pro vlastní, který zvládne soubory .ts. Další dvě změny říkají eslint že kromě normálního eslint , prettier a ember pravidla, chceme také lint pomocí pravidel poskytovaných @typescript-eslint/recommended .

A to je vše! Měli byste být schopni spustit npm run lint nebo npm run lint:fix a máte celý projekt podložený.