UNPKG

book-cliiii

Version:

Command line interface for front end project

35 lines (31 loc) 1.02 kB
const fs = require('fs-extra'); const path = require('path'); /** * 在文件树中删除文件 * @param {String} directory - 文件路径 * @param {String} newFiles - 新文件内容 * @param {String} previousFiles - 前置文件 */ function deleteRemovedFiles(directory, newFiles, previousFiles) { // 获取不在新文件系统中且仍然存在的所有文件 const filesToDelete = Object.keys(previousFiles).filter( (filename) => !newFiles[filename], ); // 删除这些文件中的每一个 return Promise.all( filesToDelete.map((filename) => fs.unlink(path.join(directory, filename))), ); } module.exports = async function writeFileTree(dir, files, previousFiles) { if (process.env.BOOK_CLI_SKIP_WRITE) { return; } if (previousFiles) { await deleteRemovedFiles(dir, files, previousFiles); } Object.keys(files).forEach((name) => { const filePath = path.join(dir, name); fs.ensureDirSync(path.dirname(filePath)); fs.writeFileSync(filePath, files[name]); }); };