const fs = require('fs'); const path = require('path'); // 解决 node_modules 修改源码,导致重新装包而要手动替换源码的重复操作。 // 将 scripts/node_modules 内的文件 覆盖 真正的 node_modules const REAL_NODE_MODULES = path.resolve('./node_modules'); // 旧node_modules const MY_NODE_MODULES = path.resolve('./scripts/new_node_modules'); // 新node_modules copy(MY_NODE_MODULES, REAL_NODE_MODULES); /** *复制目录中的所有文件包括子目录 *@param{string}需要复制的目录、文件 *@param{string}复制到指定的目录、文件 *@param{function}每次复制前,都会经过一次filterFn,若返回true,则复制。 */ function copy(origin, target, filterFn = () => true) { if (fs.statSync(origin).isDirectory()) { // 来源是个文件夹,那目标也整一个文件夹 if (!fs.existsSync(target)) { fs.mkdirSync(target); } fs.readdirSync(origin).forEach(originName => { const originFilePath = path.resolve(origin, originName); const targetFilePath = path.resolve(target, originName); copy(originFilePath, targetFilePath, filterFn); }); } else if (filterFn(origin, target)) { fs.copyFileSync(origin, target); } }