@@ -3,7 +3,14 @@ import * as path from 'path'
33import { ESLint } from 'eslint'
44import * as glob from 'glob'
55
6- import { validateEnv , validateConfig , validatePackage , validateRecommend } from './js-binding'
6+ import {
7+ validateEnvPrint ,
8+ validateConfigPrint ,
9+ validatePackagePrint ,
10+ validateRecommendPrint ,
11+ MessageKind ,
12+ ValidateResult ,
13+ } from './js-binding'
714
815export default ( ctx ) => {
916 ctx . registerCommand ( {
@@ -22,16 +29,38 @@ export default (ctx) => {
2229 }
2330 return v
2431 } )
25- validateEnv ( )
26- validateConfig ( configStr )
27- validatePackage ( appPath , nodeModulesPath )
28- validateRecommend ( appPath )
29- await validateEslint ( ctx . initialConfig , chalk )
32+ validateEnvPrint ( )
33+ validateConfigPrint ( configStr )
34+ validatePackagePrint ( appPath , nodeModulesPath )
35+ validateRecommendPrint ( appPath )
36+ await validateEslintPrint ( ctx . initialConfig , chalk )
3037 } ,
3138 } )
3239}
3340
34- export async function validateEslint ( projectConfig , chalk ) {
41+ export async function validateEslint ( projectConfig , chalk ) : Promise < ValidateResult > {
42+ const result = await validateEslintCore ( projectConfig , chalk )
43+ result . messages . unshift ( {
44+ kind : MessageKind . Info ,
45+ content : `\u{1F3AF} 检查 ESLint (以下为 ESLint 的输出)!` ,
46+ } )
47+ return result
48+ }
49+
50+ export async function validateEslintPrint ( projectConfig , chalk ) : Promise < boolean > {
51+ const result = await validateEslintCore ( projectConfig , chalk )
52+ let is_valid = result . isValid
53+ let rawReport = result . messages [ 0 ] . content
54+ console . log ( `\u{1F3AF} 检查 ESLint (以下为 ESLint 的输出)!` )
55+ if ( is_valid ) {
56+ console . log ( `${ chalk . green ( '[\u{2713}]' ) } Eslint 检查通过!` )
57+ } else {
58+ console . log ( rawReport )
59+ }
60+ return is_valid
61+ }
62+
63+ async function validateEslintCore ( projectConfig , chalk ) : Promise < ValidateResult > {
3564 const appPath = process . cwd ( )
3665 const globPattern = glob . sync ( path . join ( appPath , '.eslintrc*' ) )
3766
@@ -46,14 +75,21 @@ export async function validateEslint(projectConfig, chalk) {
4675 const sourceFiles = path . join ( process . cwd ( ) , projectConfig . sourceRoot , '**/*.{js,ts,jsx,tsx}' )
4776 const report = await eslintCli . lintFiles ( [ sourceFiles ] )
4877 const formatter = await eslintCli . loadFormatter ( )
49- const rawReport = formatter . format ( report )
78+ let rawReport = formatter . format ( report )
5079 let is_valid = true
51- console . log ( `\u{1F3AF} 检查 ESLint (以下为 ESLint 的输出)!` )
5280 if ( rawReport ) {
5381 is_valid = false
54- console . log ( rawReport )
55- } else {
56- console . log ( `${ chalk . green ( '[\u{2713}]' ) } Eslint 检查通过!` )
5782 }
58- return is_valid
83+ if ( is_valid ) {
84+ rawReport = `${ chalk . green ( '[\u{2713}]' ) } Eslint 检查通过!`
85+ }
86+ return {
87+ isValid : is_valid ,
88+ messages : [
89+ {
90+ kind : is_valid ? MessageKind . Success : MessageKind . Error ,
91+ content : rawReport ,
92+ } ,
93+ ] ,
94+ }
5995}
0 commit comments