Skip to content

Commit 42e1913

Browse files
author
t-sauer
committed
Added Standard support
1 parent 79aa70d commit 42e1913

File tree

3 files changed

+24
-7
lines changed

3 files changed

+24
-7
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ Currently supported linters:
1212
* ESLint
1313
* JSHint
1414
* JSCS
15+
* Standard
1516

1617
## Requirements
1718

@@ -21,6 +22,7 @@ You can find these extensions here:
2122
* [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)
2223
* [JSHint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.jshint)
2324
* [JSCS](https://marketplace.visualstudio.com/items?itemName=ms-vscode.jscs)
25+
* Standard: [JavaScript Standard Style](https://marketplace.visualstudio.com/items?itemName=chenxsan.vscode-standardjs) or [JS "Standard" Linter](https://marketplace.visualstudio.com/items?itemName=shinnn.standard)
2426

2527
## Extension Settings
2628

@@ -33,6 +35,7 @@ Possible Values:
3335
* `eslint`
3436
* `jscs`
3537
* `jshint`
38+
* `standard`
3639

3740
The default linters will be set if you either open a Javascript file while a folder is opened (if you just open single files the linters won't get set automatically) or if you run the command `Automatically set correct Javascript linters` from the command palette.
3841

src/extension.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,13 +100,23 @@ class AutoLinter {
100100
const packageJSONPath = path.join(rootPath, 'package.json');
101101

102102
if (fs.existsSync(packageJSONPath)) {
103-
let packageContent = {};
103+
let packageContent = <any>{};
104104
try {
105-
packageContent = JSON.parse(fs.readFileSync(packageJSONPath, 'utf8'));
105+
packageContent = <any>JSON.parse(fs.readFileSync(packageJSONPath, 'utf8'));
106106
} catch (e) {}
107107

108108
return LINTERS.filter((linter) => {
109-
return typeof (<any>packageContent)[linter.packageJSONConfig] === 'object';
109+
if (typeof packageContent[linter.packageJSONConfig] === 'object') {
110+
return true;
111+
}
112+
113+
if (linter.packageDependency) {
114+
const inDevDependencies = packageContent.devDependencies && packageContent.devDependencies[linter.packageDependency];
115+
const inDependencies = packageContent.dependencies && packageContent.dependencies[linter.packageDependency];
116+
return inDevDependencies || inDependencies;
117+
}
118+
119+
return false;
110120
});
111121
}
112122

src/linter-configs.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
export interface LinterConfig {
22
name: string;
33
configFiles: string[];
4-
extension: string;
54
enableConfig: string;
65
packageJSONConfig?: string;
6+
packageDependency?: string;
77
}
88

99
export const LINTERS: LinterConfig[] = [
@@ -16,7 +16,6 @@ export const LINTERS: LinterConfig[] = [
1616
'.eslintrc.yml',
1717
'.eslintrc.json'
1818
],
19-
extension: 'vscode-eslint',
2019
enableConfig: 'eslint.enable',
2120
packageJSONConfig: 'eslintConfig'
2221
},
@@ -25,7 +24,6 @@ export const LINTERS: LinterConfig[] = [
2524
configFiles: [
2625
'.jshintrc'
2726
],
28-
extension: 'jshint',
2927
enableConfig: 'jshint.enable',
3028
packageJSONConfig: 'jshintConfig'
3129
},
@@ -35,8 +33,14 @@ export const LINTERS: LinterConfig[] = [
3533
'.jscsrc',
3634
'.jscs.json'
3735
],
38-
extension: 'jscs',
3936
enableConfig: 'jscs.enable',
4037
packageJSONConfig: 'jscsConfig'
38+
},
39+
{
40+
name: 'Standard',
41+
configFiles: [],
42+
enableConfig: 'standard.enable',
43+
packageJSONConfig: 'jscsConfig',
44+
packageDependency: 'standard'
4145
}
4246
];

0 commit comments

Comments
 (0)