Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit c682887

Browse filesBrowse files
committed
♻️ refactor: remove inquirer and add stat check
1 parent c92a5cb commit c682887
Copy full SHA for c682887

3 files changed

+33-11Lines changed: 33 additions & 11 deletions

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎package.json‎

Copy file name to clipboardExpand all lines: package.json
+2-3Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "npmshit",
3-
"version": "0.2.2",
3+
"version": "0.3.0",
44
"description": "自动清理node_modules中无用的文件",
55
"main": "dist/index.js",
66
"typings": "dist/index.d.ts",
@@ -40,10 +40,9 @@
4040
},
4141
"dependencies": {
4242
"@types/cli-spinner": "^0.2.0",
43-
"@types/inquirer": "0.0.42",
43+
"@types/node": "^10.3.6",
4444
"cli-spinner": "^0.2.8",
4545
"commander": "^2.15.1",
46-
"inquirer": "^6.0.0",
4746
"rd": "^2.0.0"
4847
}
4948
}
Collapse file

‎src/cli.ts‎

Copy file name to clipboardExpand all lines: src/cli.ts
+28-7Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,25 @@
1+
import path from "path";
12
import program, { Command } from "commander";
23
import { Spinner } from "cli-spinner";
34
const { version, description } = require("../package.json");
4-
import { listFiles, humanFileSize, IResult, rmFile } from "./index";
5-
import inquirer from "inquirer";
5+
import { listFiles, humanFileSize, IResult, unlinkAsync, statAsync } from "./index";
6+
import readline from "readline";
67

78
const promptDelete = [{ type: "confirm", name: "confirmDelete", message: "是否确定执行删除操作: ", default: false }];
89

10+
function prompt(q: string): Promise<string> {
11+
const rl = readline.createInterface({
12+
input: process.stdin,
13+
output: process.stdout
14+
});
15+
return new Promise(resolve => {
16+
rl.question(q, answer => {
17+
rl.close();
18+
resolve(answer);
19+
});
20+
});
21+
}
22+
923
function sleep(ms: number) {
1024
ms = ms > 0 ? ms : 0;
1125
return new Promise(resolve => {
@@ -37,18 +51,25 @@ const env = program
3751
.parse(process.argv);
3852

3953
async function main(env: Command) {
40-
const listFile = listFiles("/Users/Yourtion/Codes/OpenSource/npmshit/npmshit/node_modules");
54+
const dir = path.resolve(process.cwd(), "node_modules");
55+
try {
56+
await statAsync(dir);
57+
} catch (error) {
58+
throw new Error("当前目录没有 node_modules");
59+
}
60+
const listFile = listFiles(dir);
4161
const ret = await spinner("努力扫描中...", listFile);
4262
logRes(ret);
43-
if(env.list) return;
44-
const { confirmDelete } = (await inquirer.prompt(promptDelete)) as { confirmDelete: boolean };
63+
if (env.list) return;
64+
const del = await prompt("是否确定执行删除操作: (y/N)");
65+
const confirmDelete = del.toLowerCase() === "y";
4566
if (!confirmDelete) return;
4667
const rms = ret.fileList.map(it => {
4768
console.log("删除文件:%s", it);
48-
return rmFile(it);
69+
return unlinkAsync(it);
4970
});
5071
await Promise.all(rms);
5172
console.log("删除完成!释放空间:", humanFileSize(ret.size));
5273
}
5374

54-
main(env).catch(console.error)
75+
main(env).catch(err => console.error(err.message || err));
Collapse file

‎src/index.ts‎

Copy file name to clipboardExpand all lines: src/index.ts
+3-1Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ export interface IResult {
1515

1616
export type Callback = (err: Error | null, res: IResult) => void;
1717

18-
export const rmFile = promisify(fs.unlink);
18+
export const unlinkAsync = promisify(fs.unlink);
19+
20+
export const statAsync = promisify(fs.stat);
1921

2022
export function humanFileSize(size: number) {
2123
if (size < 1) return "0 B";

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.