Newer
Older
KaiFengPC / scripts / changeModules.js
@zhangdeliang zhangdeliang on 20 May 1 KB 项目初始化
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);
  }
}