Newer
Older
urbanLifeline_YanAn / scripts / changeModules.js
@zhangqy zhangqy on 3 Oct 1 KB first commit
  1. const fs = require('fs');
  2. const path = require('path');
  3.  
  4. // 解决 node_modules 修改源码,导致重新装包而要手动替换源码的重复操作。
  5.  
  6. // 将 scripts/node_modules 内的文件 覆盖 真正的 node_modules
  7.  
  8. const REAL_NODE_MODULES = path.resolve('./node_modules'); // 旧node_modules
  9.  
  10. const MY_NODE_MODULES = path.resolve('./scripts/new_node_modules'); // 新node_modules
  11.  
  12. copy(MY_NODE_MODULES, REAL_NODE_MODULES);
  13.  
  14. /**
  15.  
  16. *复制目录中的所有文件包括子目录
  17.  
  18. *@param{string}需要复制的目录、文件
  19.  
  20. *@param{string}复制到指定的目录、文件
  21.  
  22. *@param{function}每次复制前,都会经过一次filterFn,若返回true,则复制。
  23.  
  24. */
  25.  
  26. function copy(origin, target, filterFn = () => true) {
  27. if (fs.statSync(origin).isDirectory()) {
  28. // 来源是个文件夹,那目标也整一个文件夹
  29.  
  30. if (!fs.existsSync(target)) {
  31. fs.mkdirSync(target);
  32. }
  33.  
  34. fs.readdirSync(origin).forEach(originName => {
  35. const originFilePath = path.resolve(origin, originName);
  36.  
  37. const targetFilePath = path.resolve(target, originName);
  38.  
  39. copy(originFilePath, targetFilePath, filterFn);
  40. });
  41. } else if (filterFn(origin, target)) {
  42. fs.copyFileSync(origin, target);
  43. }
  44. }