Skip to content

Commit e072df3

Browse files
committed
feat: 调整方法导出方式
1 parent 91e22e2 commit e072df3

3 files changed

Lines changed: 159 additions & 58 deletions

File tree

index.d.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
1-
import { ValidateResult } from './js-binding';
1+
import { MessageKind, Message, ValidateResult } from './js-binding';
22
declare const _default: (ctx: any) => void;
33
export default _default;
4+
export declare function validateConfig(projectConfig: any, helper: any): Promise<ValidateResult>;
5+
export declare function validateConfigPrint(projectConfig: any, helper: any): Promise<boolean>;
6+
export declare function validateEnv(): ValidateResult;
7+
export declare function validateEnvPrint(): boolean;
8+
export declare function validatePackage(appPath: string, nodeModulesPath: string): ValidateResult;
9+
export declare function validatePackagePrint(appPath: string, nodeModulesPath: string): boolean;
10+
export declare function validateRecommend(appPath: string): ValidateResult;
11+
export declare function validateRecommendPrint(appPath: string): boolean;
412
export declare function validateEslint(projectConfig: any, chalk: any): Promise<ValidateResult>;
513
export declare function validateEslintPrint(projectConfig: any, chalk: any): Promise<boolean>;
14+
export { MessageKind, ValidateResult, Message };

index.js

Lines changed: 72 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -9,53 +9,96 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
99
});
1010
};
1111
Object.defineProperty(exports, "__esModule", { value: true });
12-
exports.validateEslintPrint = exports.validateEslint = void 0;
12+
exports.validateEslintPrint = exports.validateEslint = exports.validateRecommendPrint = exports.validateRecommend = exports.validatePackagePrint = exports.validatePackage = exports.validateEnvPrint = exports.validateEnv = exports.validateConfigPrint = exports.validateConfig = void 0;
1313
const path = require("path");
1414
const eslint_1 = require("eslint");
1515
const glob = require("glob");
1616
const js_binding_1 = require("./js-binding");
1717
exports.default = (ctx) => {
1818
ctx.registerCommand({
19-
name: 'doctor',
19+
name: 'dx',
2020
fn() {
2121
return __awaiter(this, void 0, void 0, function* () {
2222
const { appPath, nodeModulesPath, configPath } = ctx.paths;
23-
const { fs, chalk, getUserHomeDir, TARO_CONFIG_FOLDER, TARO_BASE_CONFIG, PROJECT_CONFIG } = ctx.helper;
23+
const { fs, chalk, PROJECT_CONFIG } = ctx.helper;
2424
if (!configPath || !fs.existsSync(configPath)) {
2525
console.log(chalk.red(`找不到项目配置文件${PROJECT_CONFIG},请确定当前目录是 Taro 项目根目录!`));
2626
process.exit(1);
2727
}
28-
const configStr = JSON.stringify(ctx.initialConfig, (_, v) => {
29-
if (typeof v === 'function') {
30-
return '__function__';
31-
}
32-
return v;
33-
});
34-
let remoteConfigSchemaUrl = 'https://raw.githubusercontent.com/NervJS/taro-doctor/main/assets/config_schema.json';
35-
let useRemoteConfigSchema = true;
36-
const homedir = getUserHomeDir();
37-
if (homedir) {
38-
const taroConfigPath = path.join(homedir, TARO_CONFIG_FOLDER);
39-
const taroConfig = path.join(taroConfigPath, TARO_BASE_CONFIG);
40-
if (fs.existsSync(taroConfig)) {
41-
const config = yield fs.readJSON(taroConfig);
42-
remoteConfigSchemaUrl = config && config.remoteConfigSchemaUrl ? config.remoteConfigSchemaUrl : remoteConfigSchemaUrl;
43-
useRemoteConfigSchema = config && config.useRemoteConfigSchema ? config.useRemoteConfigSchema : useRemoteConfigSchema;
44-
}
45-
else {
46-
yield fs.createFile(taroConfig);
47-
yield fs.writeJSON(taroConfig, { remoteConfigSchemaUrl, useRemoteConfigSchema });
48-
}
49-
}
50-
(0, js_binding_1.validateEnvPrint)();
51-
yield (0, js_binding_1.validateConfigPrint)(configStr, remoteConfigSchemaUrl, useRemoteConfigSchema);
52-
(0, js_binding_1.validatePackagePrint)(appPath, nodeModulesPath);
53-
(0, js_binding_1.validateRecommendPrint)(appPath);
28+
validateEnvPrint();
29+
yield validateConfigPrint(ctx.initialConfig, ctx.helper);
30+
validatePackagePrint(appPath, nodeModulesPath);
31+
validateRecommendPrint(appPath);
5432
yield validateEslintPrint(ctx.initialConfig, chalk);
5533
});
5634
},
5735
});
5836
};
37+
function getValidateConfigParams(projectConfig, helper) {
38+
return __awaiter(this, void 0, void 0, function* () {
39+
const configStr = JSON.stringify(projectConfig, (_, v) => {
40+
if (typeof v === 'function') {
41+
return '__function__';
42+
}
43+
return v;
44+
});
45+
let remoteSchemaUrl = 'https://raw.githubusercontent.com/NervJS/taro-doctor/main/assets/config_schema.json';
46+
let useRemoteSchema = true;
47+
const homedir = helper.getUserHomeDir();
48+
if (homedir) {
49+
const taroConfigPath = path.join(homedir, helper.TARO_CONFIG_FOLDER);
50+
const taroConfig = path.join(taroConfigPath, helper.TARO_BASE_CONFIG);
51+
if (helper.fs.existsSync(taroConfig)) {
52+
const config = yield helper.fs.readJSON(taroConfig);
53+
remoteSchemaUrl = config && config.remoteConfigSchemaUrl ? config.remoteConfigSchemaUrl : remoteSchemaUrl;
54+
useRemoteSchema = config && config.useRemoteConfigSchema ? config.useRemoteConfigSchema : useRemoteSchema;
55+
}
56+
else {
57+
yield helper.fs.createFile(taroConfig);
58+
yield helper.fs.writeJSON(taroConfig, { remoteSchemaUrl, useRemoteSchema });
59+
}
60+
}
61+
return { configStr, remoteSchemaUrl, useRemoteSchema };
62+
});
63+
}
64+
function validateConfig(projectConfig, helper) {
65+
return __awaiter(this, void 0, void 0, function* () {
66+
const { configStr, remoteSchemaUrl, useRemoteSchema } = yield getValidateConfigParams(projectConfig, helper);
67+
return (0, js_binding_1.validateConfig)(configStr, remoteSchemaUrl, useRemoteSchema);
68+
});
69+
}
70+
exports.validateConfig = validateConfig;
71+
function validateConfigPrint(projectConfig, helper) {
72+
return __awaiter(this, void 0, void 0, function* () {
73+
const { configStr, remoteSchemaUrl, useRemoteSchema } = yield getValidateConfigParams(projectConfig, helper);
74+
return (0, js_binding_1.validateConfigPrint)(configStr, remoteSchemaUrl, useRemoteSchema);
75+
});
76+
}
77+
exports.validateConfigPrint = validateConfigPrint;
78+
function validateEnv() {
79+
return (0, js_binding_1.validateEnv)();
80+
}
81+
exports.validateEnv = validateEnv;
82+
function validateEnvPrint() {
83+
return (0, js_binding_1.validateEnvPrint)();
84+
}
85+
exports.validateEnvPrint = validateEnvPrint;
86+
function validatePackage(appPath, nodeModulesPath) {
87+
return (0, js_binding_1.validatePackage)(appPath, nodeModulesPath);
88+
}
89+
exports.validatePackage = validatePackage;
90+
function validatePackagePrint(appPath, nodeModulesPath) {
91+
return (0, js_binding_1.validatePackagePrint)(appPath, nodeModulesPath);
92+
}
93+
exports.validatePackagePrint = validatePackagePrint;
94+
function validateRecommend(appPath) {
95+
return (0, js_binding_1.validateRecommend)(appPath);
96+
}
97+
exports.validateRecommend = validateRecommend;
98+
function validateRecommendPrint(appPath) {
99+
return (0, js_binding_1.validateRecommendPrint)(appPath);
100+
}
101+
exports.validateRecommendPrint = validateRecommendPrint;
59102
function validateEslint(projectConfig, chalk) {
60103
return __awaiter(this, void 0, void 0, function* () {
61104
const result = yield validateEslintCore(projectConfig, chalk);

index.ts

Lines changed: 77 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4,55 +4,98 @@ import { ESLint } from 'eslint'
44
import * as glob from 'glob'
55

66
import {
7-
validateEnvPrint,
8-
validateConfigPrint,
9-
validatePackagePrint,
10-
validateRecommendPrint,
7+
validateEnvPrint as validateEnvPrintBinding,
8+
validateConfigPrint as validateConfigPrintBinding,
9+
validatePackagePrint as validatePackagePrintBinding,
10+
validateRecommendPrint as validateRecommendPrintBinding,
11+
validateEnv as validateEnvBinding,
12+
validateConfig as validateConfigBinding,
13+
validatePackage as validatePackageBinding,
14+
validateRecommend as validateRecommendBinding,
1115
MessageKind,
16+
Message,
1217
ValidateResult,
1318
} from './js-binding'
1419

1520
export default (ctx) => {
1621
ctx.registerCommand({
17-
name: 'doctor',
22+
name: 'dx',
1823
async fn() {
1924
const { appPath, nodeModulesPath, configPath } = ctx.paths
20-
const { fs, chalk, getUserHomeDir, TARO_CONFIG_FOLDER, TARO_BASE_CONFIG, PROJECT_CONFIG } = ctx.helper
25+
const { fs, chalk, PROJECT_CONFIG } = ctx.helper
2126

2227
if (!configPath || !fs.existsSync(configPath)) {
2328
console.log(chalk.red(`找不到项目配置文件${PROJECT_CONFIG},请确定当前目录是 Taro 项目根目录!`))
2429
process.exit(1)
2530
}
26-
const configStr = JSON.stringify(ctx.initialConfig, (_, v) => {
27-
if (typeof v === 'function') {
28-
return '__function__'
29-
}
30-
return v
31-
})
32-
let remoteConfigSchemaUrl = 'https://raw.githubusercontent.com/NervJS/taro-doctor/main/assets/config_schema.json'
33-
let useRemoteConfigSchema = true
34-
const homedir = getUserHomeDir()
35-
if (homedir) {
36-
const taroConfigPath = path.join(homedir, TARO_CONFIG_FOLDER)
37-
const taroConfig = path.join(taroConfigPath, TARO_BASE_CONFIG)
38-
if (fs.existsSync(taroConfig)) {
39-
const config = await fs.readJSON(taroConfig)
40-
remoteConfigSchemaUrl = config && config.remoteConfigSchemaUrl ? config.remoteConfigSchemaUrl : remoteConfigSchemaUrl
41-
useRemoteConfigSchema = config && config.useRemoteConfigSchema ? config.useRemoteConfigSchema : useRemoteConfigSchema
42-
} else {
43-
await fs.createFile(taroConfig)
44-
await fs.writeJSON(taroConfig, { remoteConfigSchemaUrl, useRemoteConfigSchema })
45-
}
46-
}
4731
validateEnvPrint()
48-
await validateConfigPrint(configStr, remoteConfigSchemaUrl, useRemoteConfigSchema)
32+
await validateConfigPrint(ctx.initialConfig, ctx.helper)
4933
validatePackagePrint(appPath, nodeModulesPath)
5034
validateRecommendPrint(appPath)
5135
await validateEslintPrint(ctx.initialConfig, chalk)
5236
},
5337
})
5438
}
5539

40+
async function getValidateConfigParams(projectConfig: any, helper: any) {
41+
const configStr = JSON.stringify(projectConfig, (_, v) => {
42+
if (typeof v === 'function') {
43+
return '__function__'
44+
}
45+
return v
46+
})
47+
let remoteSchemaUrl = 'https://raw.githubusercontent.com/NervJS/taro-doctor/main/assets/config_schema.json'
48+
let useRemoteSchema = true
49+
const homedir = helper.getUserHomeDir()
50+
if (homedir) {
51+
const taroConfigPath = path.join(homedir, helper.TARO_CONFIG_FOLDER)
52+
const taroConfig = path.join(taroConfigPath, helper.TARO_BASE_CONFIG)
53+
if (helper.fs.existsSync(taroConfig)) {
54+
const config = await helper.fs.readJSON(taroConfig)
55+
remoteSchemaUrl = config && config.remoteConfigSchemaUrl ? config.remoteConfigSchemaUrl : remoteSchemaUrl
56+
useRemoteSchema = config && config.useRemoteConfigSchema ? config.useRemoteConfigSchema : useRemoteSchema
57+
} else {
58+
await helper.fs.createFile(taroConfig)
59+
await helper.fs.writeJSON(taroConfig, { remoteSchemaUrl, useRemoteSchema })
60+
}
61+
}
62+
return { configStr, remoteSchemaUrl, useRemoteSchema }
63+
}
64+
65+
export async function validateConfig(projectConfig: any, helper: any): Promise<ValidateResult> {
66+
const { configStr, remoteSchemaUrl, useRemoteSchema } = await getValidateConfigParams(projectConfig, helper)
67+
return validateConfigBinding(configStr, remoteSchemaUrl, useRemoteSchema)
68+
}
69+
70+
export async function validateConfigPrint(projectConfig: any, helper: any): Promise<boolean> {
71+
const { configStr, remoteSchemaUrl, useRemoteSchema } = await getValidateConfigParams(projectConfig, helper)
72+
return validateConfigPrintBinding(configStr, remoteSchemaUrl, useRemoteSchema)
73+
}
74+
75+
export function validateEnv(): ValidateResult {
76+
return validateEnvBinding()
77+
}
78+
79+
export function validateEnvPrint(): boolean {
80+
return validateEnvPrintBinding()
81+
}
82+
83+
export function validatePackage(appPath: string, nodeModulesPath: string): ValidateResult {
84+
return validatePackageBinding(appPath, nodeModulesPath)
85+
}
86+
87+
export function validatePackagePrint(appPath: string, nodeModulesPath: string): boolean {
88+
return validatePackagePrintBinding(appPath, nodeModulesPath)
89+
}
90+
91+
export function validateRecommend(appPath: string): ValidateResult {
92+
return validateRecommendBinding(appPath)
93+
}
94+
95+
export function validateRecommendPrint(appPath: string): boolean {
96+
return validateRecommendPrintBinding(appPath)
97+
}
98+
5699
export async function validateEslint(projectConfig, chalk): Promise<ValidateResult> {
57100
const result = await validateEslintCore(projectConfig, chalk)
58101
result.messages.unshift({
@@ -108,3 +151,9 @@ async function validateEslintCore(projectConfig, chalk): Promise<ValidateResult>
108151
],
109152
}
110153
}
154+
155+
export {
156+
MessageKind,
157+
ValidateResult,
158+
Message
159+
}

0 commit comments

Comments
 (0)