import fs from "fs" import { join, dirname } from "path" process.stdin.setEncoding("utf8"); function readlineSync(msg = "Input:") { return new Promise((resolve, reject) => { console.log(msg) process.stdin.resume(); process.stdin.on("data", function (data) { process.stdin.pause(); resolve(data.substring(0, data.length - 2)); }); }); } // entry point async function main() { let jsonpath = await readlineSync("Input the JSON Path:"); let srcpath = await readlineSync("Input the src Path:"); let distpath = await readlineSync("Input the dist Path:"); let json = JSON.parse(fs.readFileSync(jsonpath, "utf8")); json.forEach(element => { let hash = element.hash; let srcfilepath = join(srcpath, hash.substring(0, 2), hash); let distfilepath = join(distpath, element.path); if (!fs.existsSync(distfilepath)) { fs.mkdirSync(dirname(distfilepath), { recursive: true }); } if (fs.existsSync(srcfilepath)) { fs.copyFileSync(srcfilepath, distfilepath); } else { console.log(`文件不存在:${srcfilepath}`) } }); } main();