node复制文件夹和单个文件

100 阅读1分钟
var stat = fs.stat;

var copy = function (src, dst) {
	//读取目录
	fs.readdir(src, function (err, paths) {
		console.log(paths);
		if (err) {
			throw err;
		}
		paths.forEach(function (path) {
			var _src = src + '/' + path;
			var _dst = dst + '/' + path;
			var readable;
			var writable;
			stat(_src, function (err, st) {
				if (err) {
					throw err;
				}

				if (st.isFile()) {
					readable = fs.createReadStream(_src);//创建读取流
					writable = fs.createWriteStream(_dst);//创建写入流
					readable.pipe(writable);
				} else if (st.isDirectory()) {
					exists(_src, _dst, copy);
				}
			});
		});
	});
};

var exists = function (src, dst, callback) {
	//测试某个路径下文件是否存在
	fs.exists(dst, function (exists) {
		if (exists) {//不存在
			callback(src, dst);
		} else {//存在
			fs.mkdir(dst, function () {//创建目录
				callback(src, dst);
			});
		}
	});
};
//复制文件夹
exists('./dist-backend', '../../../../static/public/dist-backend', copy);

//复制文件
const readable = fs.createReadStream('./dist-backend/manifest.json');
const writable = fs.createWriteStream('../../../server/back-end-integration/manifest.json');
readable.pipe(writable);