Skip to content

Commit d6360e5

Browse files
author
alexqxxu
committed
refactor: 更新 eslint 规则,修复 eslint 问题
1 parent b4c61b1 commit d6360e5

File tree

27 files changed

+611
-285
lines changed

27 files changed

+611
-285
lines changed

.eslintrc.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module.exports = {
2-
extends: ['eslint-config-tencent', 'eslint-config-tencent/ts', 'eslint-config-tencent/prettier'],
2+
extends: ['eslint-config-tencent', 'eslint-config-tencent/ts'],
33
parserOptions: {
44
project: './tsconfig.eslint.json',
55
},

package-lock.json

Lines changed: 376 additions & 21 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
"commitizen": "^4.2.4",
3535
"cz-conventional-changelog": "^3.3.0",
3636
"eslint": "^7.32.0",
37-
"eslint-config-tencent": "^1.0.2",
37+
"eslint-config-tencent": "^1.0.4",
3838
"eslint-plugin-chai-friendly": "^0.7.2",
3939
"eslint-plugin-mocha": "^9.0.0",
4040
"eslint-plugin-prettier": "^3.4.1",

packages/feflow-cli/src/cli/index.ts

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@ import {
1616
import { fileExit } from '../shared/file';
1717
import Feflow from '../core';
1818

19-
const pkg = JSON.parse(
20-
stripComments(fs.readFileSync(path.resolve(__dirname, '../../package.json'), 'utf8').replace(/^\ufeff/u, '')),
21-
);
19+
const pkg = JSON.parse(stripComments(fs.readFileSync(path.resolve(__dirname, '../../package.json'), 'utf8').replace(/^\ufeff/u, '')));
2220

2321
export default async function entry() {
2422
const args = minimist(process.argv.slice(2), {
@@ -45,9 +43,8 @@ export default async function entry() {
4543
const feflow = new Feflow(args);
4644
const { commander, logger, reporter, fefError } = feflow;
4745

48-
const handleUnexpectedError = (
49-
...args: Parameters<NodeJS.UncaughtExceptionListener | NodeJS.UnhandledRejectionListener>
50-
) => {
46+
const handleUnexpectedError = (...args: Parameters<NodeJS.UncaughtExceptionListener
47+
| NodeJS.UnhandledRejectionListener>) => {
5148
const [err] = args;
5249
logger.error(err);
5350
reporter.reportCommandError(err);
@@ -98,9 +95,7 @@ export default async function entry() {
9895

9996
function ensureNodeVersion(requiredVersion: string, id: string): void {
10097
if (!semver.satisfies(process.version, requiredVersion)) {
101-
console.error(
102-
`You are using Node ${process.version}, but this version of ${id} requires Node ${requiredVersion}.\nPlease upgrade your Node version.`,
103-
);
98+
console.error(`You are using Node ${process.version}, but this version of ${id} requires Node ${requiredVersion}.\nPlease upgrade your Node version.`);
10499
process.exit(1);
105100
}
106101
}

packages/feflow-cli/src/core/command-picker/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ export class CacheController {
133133
if (!!this.lastCommand) {
134134
if (type === CommandType.PLUGIN_TYPE) {
135135
// 命令相同的场景,插件提供方变化后,依然可以探测到是新命令
136-
const commonCommands = Object.keys(store).filter((item) => !newCommands.includes(item));
136+
const commonCommands = Object.keys(store).filter(item => !newCommands.includes(item));
137137
for (const common of commonCommands) {
138138
if (!this.lastStore[common]) continue;
139139
if (store[common].pluginName !== this.lastStore[common].pluginName) {
@@ -211,7 +211,7 @@ export class CacheController {
211211
const nativePath = path.join(__dirname, '../native');
212212
const nativeMap: PluginInfo = {};
213213
fs.readdirSync(nativePath)
214-
.filter((file) => file.endsWith('.js'))
214+
.filter(file => file.endsWith('.js'))
215215
.forEach((file) => {
216216
const command = file.split('.')[0];
217217
// 通过缓存路径的方式并不是一个值得主张的方案,例如在我们使用webpack构建单文件时这个机制会成为束缚

packages/feflow-cli/src/core/devkit/load-devkits.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const registerDevkitCommand = (command: string, commandConfig: CommandConfig, di
1818
try {
1919
const devkitConfig = config.loadDevkitConfig(pkgPath);
2020
if (!devkitConfig) {
21-
ctx.logger.debug(`devkit config not found!`);
21+
ctx.logger.debug('devkit config not found!');
2222
return;
2323
}
2424
const { implementation, description, optionsDescription, usage = {} } = devkitConfig.builders[command];
@@ -78,9 +78,7 @@ export default function loadDevkits(ctx: Feflow) {
7878
if (path.basename(directoryPath) === FEFLOW_ROOT) {
7979
ctx.logger.debug('Run commands in .fef root will not work.');
8080
} else {
81-
ctx.logger.error(
82-
`A config file .feflowrc(.js|.yaml|.yml|.json) was detected in ${directoryPath}, but lost required property 'commands' in field 'devkit'. Please check your config file or just delete it.`,
83-
);
81+
ctx.logger.error(`A config file .feflowrc(.js|.yaml|.yml|.json) was detected in ${directoryPath}, but lost required property 'commands' in field 'devkit'. Please check your config file or just delete it.`);
8482
}
8583
}
8684
} else {

packages/feflow-cli/src/core/index.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ export default class Feflow {
159159
return new Promise<void>((resolve, reject) => {
160160
if (!this.config?.packageManager) {
161161
const packageManagers = ['npm', 'tnpm', 'yarn', 'cnpm'];
162-
const defaultPackageManager = packageManagers.find((packageManager) => isInstalledPM(packageManager));
162+
const defaultPackageManager = packageManagers.find(packageManager => isInstalledPM(packageManager));
163163
if (!defaultPackageManager) {
164164
// 无包管理器直接结束
165165
logger.error('You must installed a package manager');
@@ -180,9 +180,11 @@ export default class Feflow {
180180

181181
loadNative() {
182182
const nativePath = path.join(__dirname, './native/*.js');
183-
glob.sync(nativePath).forEach(async (file: string) => {
184-
const nativeCommandEntry = await import(file);
185-
nativeCommandEntry.default(this);
183+
glob.sync(nativePath).forEach((file: string) => {
184+
(async () => {
185+
const nativeCommandEntry = await import(file);
186+
nativeCommandEntry.default(this);
187+
})();
186188
});
187189
}
188190

packages/feflow-cli/src/core/logger/report.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,12 @@ async function report(logObj?: LogObj) {
9595
if (readData.length < 20) {
9696
// 如果有timer则不创新新的timer
9797
if (!hasTimer) {
98-
timer = setTimeout(async () => {
99-
await send(logObj, readData);
100-
timer && clearTimeout(timer);
101-
timer = null;
98+
timer = setTimeout(() => {
99+
(async () => {
100+
await send(logObj, readData);
101+
timer && clearTimeout(timer);
102+
timer = null;
103+
})();
102104
}, 5000);
103105
}
104106
return;

packages/feflow-cli/src/core/native/init.ts

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -6,34 +6,36 @@ import yeoman from 'yeoman-environment';
66
import Feflow from '../';
77
import { install } from '../../shared/npm';
88

9-
const loadGenerator = (root: string, rootPkg: string) =>
10-
new Promise<{ name: string; desc: string }[]>((resolve, reject) => {
11-
fs.readFile(rootPkg, 'utf8', (err, data) => {
12-
if (err) {
13-
reject(err);
14-
} else {
15-
const json = JSON.parse(data);
16-
const deps = json.dependencies || json.devDependencies || {};
17-
const generators = Object.keys(deps)
18-
.filter((name) => {
19-
if (!/^generator-|^@[^/]+\/generator-/.test(name)) {
20-
return false;
21-
}
22-
const generatorPath = path.join(root, 'node_modules', name);
23-
return fs.existsSync(generatorPath);
24-
})
25-
.map((name) => {
26-
const generatorPkgPath = path.join(root, 'node_modules', name, 'package.json');
27-
const generatorPkgData = fs.readFileSync(generatorPkgPath, 'utf8');
28-
const generatorPkgJson = JSON.parse(generatorPkgData);
29-
const desc = generatorPkgJson.description as string;
9+
const loadGenerator = (
10+
root: string,
11+
rootPkg: string,
12+
) => new Promise<{ name: string; desc: string }[]>((resolve, reject) => {
13+
fs.readFile(rootPkg, 'utf8', (err, data) => {
14+
if (err) {
15+
reject(err);
16+
} else {
17+
const json = JSON.parse(data);
18+
const deps = json.dependencies || json.devDependencies || {};
19+
const generators = Object.keys(deps)
20+
.filter((name) => {
21+
if (!/^generator-|^@[^/]+\/generator-/.test(name)) {
22+
return false;
23+
}
24+
const generatorPath = path.join(root, 'node_modules', name);
25+
return fs.existsSync(generatorPath);
26+
})
27+
.map((name) => {
28+
const generatorPkgPath = path.join(root, 'node_modules', name, 'package.json');
29+
const generatorPkgData = fs.readFileSync(generatorPkgPath, 'utf8');
30+
const generatorPkgJson = JSON.parse(generatorPkgData);
31+
const desc = generatorPkgJson.description as string;
3032

31-
return { name, desc };
32-
});
33-
resolve(generators);
34-
}
35-
});
33+
return { name, desc };
34+
});
35+
resolve(generators);
36+
}
3637
});
38+
});
3739

3840
const run = (ctx: Feflow, name: string) => {
3941
const { root } = ctx;
@@ -61,7 +63,7 @@ export default (ctx: Feflow) => {
6163
loadGenerator(root, rootPkg).then(async (generators) => {
6264
// feflow init 简化逻辑直接安装并使用脚手架
6365
if (generator && /^generator-|^@[^/]+\/generator-/.test(generator)) {
64-
const isGeneratorInstalled = generators.some((item) => item.name === generator);
66+
const isGeneratorInstalled = generators.some(item => item.name === generator);
6567
if (generators.length && isGeneratorInstalled) {
6668
run(ctx, generator);
6769
return;
@@ -78,7 +80,7 @@ export default (ctx: Feflow) => {
7880
if (answer.ifInstall) {
7981
const { packageManager } = ctx.config || {};
8082
if (!packageManager) {
81-
ctx.logger.error(`cannot find 'packageManager' from config`);
83+
ctx.logger.error('cannot find \'packageManager\' from config');
8284
return;
8385
}
8486
install(packageManager, ctx.root, 'install', generator, false).then(() => {
@@ -88,7 +90,7 @@ export default (ctx: Feflow) => {
8890
return;
8991
}
9092
}
91-
const options = generators.map((item) => item.desc);
93+
const options = generators.map(item => item.desc);
9294
if (generators.length) {
9395
inquirer
9496
.prompt([
@@ -110,10 +112,8 @@ export default (ctx: Feflow) => {
110112
name && run(ctx, name);
111113
});
112114
} else {
113-
ctx.logger.warn(
114-
'You have not installed a template yet, ' +
115-
' please use install command. Guide: https://github.com/Tencent/feflow',
116-
);
115+
ctx.logger.warn('You have not installed a template yet, '
116+
+ ' please use install command. Guide: https://github.com/Tencent/feflow');
117117
}
118118
});
119119
});

packages/feflow-cli/src/core/native/install.ts

Lines changed: 24 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export default (ctx: Feflow) => {
4343
try {
4444
await installPlugin(ctx, installPluginStr, true);
4545
} catch (e) {
46-
ctx.logger.error(`install error: `, e);
46+
ctx.logger.error('install error: ', e);
4747
process.exit(2);
4848
}
4949
});
@@ -81,7 +81,7 @@ interface PkgJson {
8181
export async function getRepoInfo(ctx: Feflow, packageName: string) {
8282
const serverUrl = ctx.config?.serverUrl;
8383
if (!serverUrl) {
84-
return Promise.reject(`cannot find 'serverUrl' from config file`);
84+
return Promise.reject('cannot find \'serverUrl\' from config file');
8585
}
8686
const url = getURL(serverUrl, `apply/getlist?name=${packageName}`);
8787
if (!url) {
@@ -148,45 +148,39 @@ function deleteDir(dirPath: string) {
148148

149149
function isGitRepo(url: string): boolean {
150150
return (
151-
new RegExp(
152-
'^git@[a-zA-Z0-9._-]+:[a-zA-Z0-9._-]+(/[a-zA-Z0-9._-]+)+.git(@v(0|[1-9]\\d*).(0|[1-9]\\d*).(0|[1-9]\\d*))?$',
153-
).test(url) ||
154-
new RegExp(
155-
'^http(s)?://([a-zA-Z0-9._-]*?(:[a-zA-Z0-9._-]*)?@)?[a-zA-Z0-9._-]+' +
156-
'(/[a-zA-Z0-9._-]+)+.git(@v(0|[1-9]\\d*).(0|[1-9]\\d*).(0|[1-9]\\d*))?$',
157-
).test(url)
151+
new RegExp('^git@[a-zA-Z0-9._-]+:[a-zA-Z0-9._-]+(/[a-zA-Z0-9._-]+)+.git(@v(0|[1-9]\\d*).(0|[1-9]\\d*).(0|[1-9]\\d*))?$').test(url)
152+
|| new RegExp('^http(s)?://([a-zA-Z0-9._-]*?(:[a-zA-Z0-9._-]*)?@)?[a-zA-Z0-9._-]+'
153+
+ '(/[a-zA-Z0-9._-]+)+.git(@v(0|[1-9]\\d*).(0|[1-9]\\d*).(0|[1-9]\\d*))?$').test(url)
158154
);
159155
}
160156

161157
async function installNpmPlugin(ctx: Feflow, ...dependencies: string[]) {
162158
const packageManager = ctx.config?.packageManager;
163159
if (!packageManager) {
164-
ctx.logger.error(`cannot find 'packageManager' in config file.`);
160+
ctx.logger.error('cannot find \'packageManager\' in config file.');
165161
return;
166162
}
167163
const registryUrl = await getRegistryUrl(packageManager);
168164
let versionList: string[];
169165
let needInstall: string[] = [];
170166
try {
171-
versionList = await Promise.all(
172-
dependencies.map(async (dependency: string) => {
173-
try {
174-
return await packageJson(dependency, registryUrl);
175-
} catch (e) {
176-
ctx.logger.error(`${dependency} not found on ${packageManager}, please check if it exists`);
177-
ctx.logger.debug(e);
178-
process.exit(2);
179-
}
180-
}),
181-
);
167+
versionList = await Promise.all(dependencies.map(async (dependency: string) => {
168+
try {
169+
return await packageJson(dependency, registryUrl);
170+
} catch (e) {
171+
ctx.logger.error(`${dependency} not found on ${packageManager}, please check if it exists`);
172+
ctx.logger.debug(e);
173+
process.exit(2);
174+
}
175+
}));
182176
const getCurversion = () => {
183177
let json: PkgJson = {};
184178
const installedPlugin = {};
185179
try {
186180
const data = fs.readFileSync(ctx.rootPkg, 'utf-8');
187181
json = JSON.parse(data);
188182
} catch (e) {
189-
ctx.logger.error(`getCurversion error: `, e);
183+
ctx.logger.error('getCurversion error: ', e);
190184
}
191185

192186
if (!json.dependencies) {
@@ -213,17 +207,15 @@ async function installNpmPlugin(ctx: Feflow, ...dependencies: string[]) {
213207
return '';
214208
});
215209
} catch (err) {
216-
ctx.logger.error(`get pkg info error: `, err);
210+
ctx.logger.error('get pkg info error: ', err);
217211
}
218212
if (!needInstall.length) {
219213
return Promise.resolve();
220214
}
221215
ctx.logger.info('Installing packages. This might take a couple of minutes.');
222-
return install(packageManager, ctx.root, packageManager === 'yarn' ? 'add' : 'install', needInstall, false).then(
223-
() => {
224-
ctx.logger.info('install success');
225-
},
226-
);
216+
return install(packageManager, ctx.root, packageManager === 'yarn' ? 'add' : 'install', needInstall, false).then(() => {
217+
ctx.logger.info('install success');
218+
});
227219
}
228220

229221
function updateNpmPluginInfo(ctx: Feflow, pluginName: string, options: any) {
@@ -245,6 +237,7 @@ function updateNpmPluginInfo(ctx: Feflow, pluginName: string, options: any) {
245237
? Array.from(new Set<string>([...globalCmd, ...options.globalCmd]))
246238
: options.globalCmd || [];
247239
npmPluginInfoJson[pluginName] = pluginInfo;
240+
// eslint-disable-next-line no-param-reassign
248241
delete options.globalCmd;
249242
}
250243
npmPluginInfoJson[pluginName] = Object.assign({}, npmPluginInfoJson[pluginName] || {}, options || {});
@@ -472,9 +465,7 @@ export async function installPlugin(ctx: Feflow, installPluginStr: string, isGlo
472465
const currentVersion = await getCurrentTag(repoPath);
473466
if (currentVersion && pkgInfo.checkoutTag === currentVersion) {
474467
if (global) {
475-
logger.info(
476-
`[${pkgInfo.repoName}] the plugin version currently installed is the latest version: ${currentVersion}`,
477-
);
468+
logger.info(`[${pkgInfo.repoName}] the plugin version currently installed is the latest version: ${currentVersion}`);
478469
}
479470
return;
480471
}
@@ -550,9 +541,7 @@ export async function getPkgInfo(ctx: Feflow, installPlugin: string): Promise<Pk
550541
}
551542
const repoInfo = await getRepoInfo(ctx, pluginName);
552543
if (!repoInfo) {
553-
ctx.logger.warn(
554-
`cant found message about ${pluginName} from Feflow Application market, please check if it exists`,
555-
);
544+
ctx.logger.warn(`cant found message about ${pluginName} from Feflow Application market, please check if it exists`);
556545
return;
557546
}
558547
repoFrom = repoInfo.repo;
@@ -662,7 +651,7 @@ async function uninstallNpmPlugin(ctx: Feflow, dependencies: string[]) {
662651
});
663652
const { packageManager } = ctx.config || {};
664653
if (!packageManager) {
665-
logger.error(`cannot find 'packageManager' in config file`);
654+
logger.error('cannot find \'packageManager\' in config file');
666655
return;
667656
}
668657
return install(

0 commit comments

Comments
 (0)