Я построил временный обходной путь.
Visual Studio 2017, похоже, соответствует настройкам TSLint, предоставленным в tsconfig.json. К сожалению, он пока не принимает правила TypeScript ESLint. Поэтому, если я хочу, чтобы TypeScript работал в редакторе VS, я должен использовать старую конфигурацию стиля tslint.json.
tsconfig.json
{
"compilerOptions": {
"plugins": [
{"name": "typescript-tslint-plugin"}
],
"target": "es5"
},
"exclude": [
"node_modules"
]
}
tslint.json :
{
"rules": {
"quotemark": [true, "double"]
}
}
Для будущего (когда ESLint в конечном итоге поглощает TSLint), я хочу, чтобы мой процесс сборки использовал ESLint.
.michael-eslintrc (я назвал его так, чтобы VS не использовал эту конфигурацию для линкования файлов JS):
{
"plugins": [
"@typescript-eslint/tslint"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 6,
"extends": [ "eslint:recommended" ],
"project": "tsconfig.json",
"sourceType": "module"
},
"rules": {
"@typescript-eslint/tslint/config": [
"warn",
{
"lintFile": "tslint.json"
}
]
}
}
Это устанавливает все необходимые мне зависимости.
package.json
{
"version": "1.0.0",
"name": "asp.net",
"private": true,
"devDependencies": {
"@typescript-eslint/parser": "1.7.0",
"@typescript-eslint/eslint-plugin-tslint": "1.7.0",
"eslint": "5.16.0",
"tslint": "5.16.0",
"typescript": "3.4.5",
"typescript-tslint-plugin": "0.3.1"
}
}
Я настроил Webpack для использования этой конфигурации ESLint для линтинга. Таким образом, Visual Studio и Webpack в конечном итоге используют один и тот же конфигурационный файл tslint.json, но они ведут себя одинаково по разным путям.
У этого метода есть несколько недостатков:
- Я не могу использовать новые собственные для ESLint правила для связывания TypeScript
- Мне придется обновить конфиг, как только VS наконец-то поддержит TS linting с ESLint
- Это только устанавливает правило lint для TS, а не JS - у меня были проблемы с получением VS для обработки .eslintrc, даже без правил TS (меня это не сильно беспокоит, потому что я конвертирую старый проект в TS - много файлов потерпит неудачу, если JS будут помечены)