35 lines
1007 B
JavaScript
35 lines
1007 B
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const DTS_DIR = path.join(__dirname, '..', '..', 'assets', 'Scripts', 'proto');
|
|
const NAMESPACE = 'proto';
|
|
|
|
function walk(dir) {
|
|
let results = [];
|
|
for (const name of fs.readdirSync(dir)) {
|
|
const p = path.join(dir, name);
|
|
const stat = fs.statSync(p);
|
|
if (stat.isDirectory()) results = results.concat(walk(p));
|
|
else if (name.endsWith('.d.ts')) results.push(p);
|
|
}
|
|
return results;
|
|
}
|
|
|
|
function wrapFile(filePath) {
|
|
const original = fs.readFileSync(filePath, 'utf8');
|
|
|
|
if (original.includes(`declare namespace ${NAMESPACE}`)) {
|
|
console.log(`跳过已包装文件: ${filePath}`);
|
|
return;
|
|
}
|
|
|
|
const wrapped = `declare namespace ${NAMESPACE} {\n${original}\n}\nexport default ${NAMESPACE};\n`;
|
|
fs.writeFileSync(filePath, wrapped, 'utf8');
|
|
console.log(`已包装文件: ${filePath}`);
|
|
}
|
|
|
|
const files = walk(DTS_DIR);
|
|
files.forEach(wrapFile);
|
|
|
|
console.log(`处理完成,共包装 ${files.length} 个 .d.ts 文件`);
|