nodejs拷贝一个文件到另一个文件夹
背景
背景是公司想做push之前的code review。
本地仓库下的git hook
这里可能要普及一下。在Git本地仓库,可以看到.git/hooks路径下有一些.sample的文件。删除pre-push.sample文件的后缀名,自己编辑一下,就可以了。
但是要确保每个开发自己的Git本地仓库的hooks路径下都有一个pre-push,所以要有一个拷贝动作。一开始我用的是批处理文件,在copy.bat下写了复制的动作。后来由于种种原因,我们的TL建议我把这个动作放到一个js文件中。
NodeJS的复制。
由于我从来没有接触过js,所以开始就百度了一下,首先看了一下参考文献中的[1],不知道为什么,我本地一直调不出来。总是报错。
然后有试了下参考文献中的[2], 这个是好用的,然而是一个文件夹下的所有文件全部拷到另一个文件夹下。而且很长。修改一下也是可以用的,但是还想找一个更好的。
于是,经过层层百度,终于自己写了一个。
附上代码
var fs = require('fs');
var path = require('path');
// 增加文件夹
function createFolder(dirpath, dirname) {
if (typeof dirname === "undefined") {
if (fs.existsSync(dirpath)) {
} else {
createFolder(dirpath, path.dirname(dirpath));
}
} else {
if (dirname !== path.dirname(dirpath)) {
createFolder(dirpath);
return;
}
if (fs.existsSync(dirname)) {
fs.mkdirSync(dirpath)
} else {
createFolder(dirname, path.dirname(dirname));
fs.mkdirSync(dirpath);
}
}
}
// 复制文件
function copyFile(orgfilepath, desdirpath, desfilename) {
if (fs.existsSync(orgfilepath)) {
let desfilepath = path.join(desdirpath, desfilename);
if (!fs.existsSync(desfilepath)) {
createFolder(desdirpath);
fs.copyFileSync(orgfilepath, desfilepath);
} else {
console.error(Date().toString() + "FolderAndFileOperation_copyFile: des file already existed." + " new path: " + desfilepath.toString());
}
} else {
console.error(Date().toString() + "FolderAndFileOperation_copyFile: org file not existed." + " org path: " + orgfilepath.toString());
}
}
copyFile('./a/1.js', './b', "1.js");
参考文献
[1]https://www.jb51.net/article/122032.htm
[2]https://www.cnblogs.com/coding4/p/7495968.html