copyXy.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. var fs = require('fs');
  2. var path = require('path');
  3. // 获取n级上层路径,要获取当前路径传0
  4. function parent_path_count(path_str, count) {
  5. // 获取多级
  6. var path_temp = path_str
  7. for (var i = 0; i < count; i++) {
  8. path_temp = path.resolve(path_temp, '..')
  9. }
  10. return path_temp
  11. }
  12. var copy = function (src, dst) {
  13. let paths = fs.readdirSync(src); //同步读取当前目录
  14. paths.forEach(function (path) {
  15. var _src = src + '/' + path;
  16. var _dst = dst + '/' + path;
  17. fs.stat(_src, function (err, stats) { //stats 该对象 包含文件属性
  18. if (err) throw err;
  19. if (stats.isFile()) { //如果是个文件则拷贝
  20. let readable = fs.createReadStream(_src);//创建读取流
  21. let writable = fs.createWriteStream(_dst);//创建写入流
  22. readable.pipe(writable);
  23. } else if (stats.isDirectory()) { //是目录则 递归
  24. // checkDirectory(_src, _dst, copy);
  25. }
  26. });
  27. });
  28. }
  29. var checkDirectory = function (src, dst, callback) {
  30. fs.access(dst, fs.constants.F_OK, (err) => {
  31. if (err) {
  32. fs.mkdirSync(dst);
  33. callback(src, dst);
  34. } else {
  35. callback(src, dst);
  36. }
  37. });
  38. };
  39. // 项目路径
  40. let projectPath = parent_path_count(path.dirname(__filename), 2)
  41. const SOURCES_DIRECTORY = `${projectPath}/warfare_backend/common/cfg/`; //源目录
  42. const TARGET_DIRECTORY = `${projectPath}/warfare_client/assets/script/common/cfg/`; //目标目录
  43. // //战斗逻辑路径
  44. // const SOURCES_BATTLE_DIRECTORY = `${projectPath}/manv_backend/cfg/battle/`; //源目录
  45. // const TARGET_BATTLE_DIRECTORY = `${projectPath}/manv_client/assets/script/cfg/battle/`; //目标目录
  46. fs.exists(TARGET_DIRECTORY, function (exists) {
  47. if (exists) {
  48. fs.exists(SOURCES_DIRECTORY, function (exists2) {
  49. if (exists2) {
  50. checkDirectory(SOURCES_DIRECTORY, TARGET_DIRECTORY, copy);
  51. // checkDirectory(SOURCES_BATTLE_DIRECTORY, TARGET_BATTLE_DIRECTORY, copy);
  52. }
  53. });
  54. }
  55. });