-
Notifications
You must be signed in to change notification settings - Fork 0
/
emitDeclaration.js
48 lines (40 loc) · 1.19 KB
/
emitDeclaration.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
const { exec } = require("child_process")
const chalk = require('react-dev-utils/chalk');
//利用tsc生成 d.ts文件
export default function emitDeclaration() {
let firseBuild = true;
let emitCourse;
// 开启tsc监听
const startEmit = () => {
emitCourse = exec(`tsc --emitDeclarationOnly`);
emitCourse.stdout.on('data', (data) => {
const dataStr = data.toString();
const dataArr = dataStr.split(' ');
if (dataArr[0] === 'error' || /error TS(\d{1,})/g.test(dataStr)) {
console.log(chalk.red(dataStr));
} else {
console.log(chalk.cyan(dataStr));
}
});
emitCourse.stderr.on('data', (data) => {
errLog(`tsc编译错误: ${data}`)
});
emitCourse.on('close', (code) => {
errLog(`tsc编译关闭: ${code}`)
});
}
const closeEmit = () => {
// 关闭子进程
}
return {
name: 'emit-declaration',
buildEnd() {
firseBuild && startEmit();
firseBuild = false;
return null;
},
closeWatcher() {
closeEmit()
}
};
}