【发布时间】:2016-07-28 12:55:21
【问题描述】:
我正在使用Node.js v6.3.1 和ncp v2.0.0
我只能让 ncp 复制目录的内容,但不能复制该目录中的单个文件。
以下是递归复制目录内容的代码:
var ncp = require("ncp").ncp;
ncp("source/directory/", "destination/directory/", callback);
...这里是相同的代码,但有一个文件作为源:
var ncp = require("ncp").ncp;
ncp("source/directory/file.txt", "destination/directory/", callback);
据我所知,ncp 是专门为递归复制目录而设计的,而不是单个文件?
我曾考虑过使用类似文件系统的 read/write 流函数,如 here 所述,但实际上为了保持一致性,我希望坚持使用 ncp。
更新:
我找到了另一个名为 node-fs-extra 的包,它可以满足我的需求,而无需我向操作中添加事件处理程序,就像我必须使用 fileSystem 读/写解决方案一样。
这是有效的代码:
var fsExtra = require("fs-extra");
fsExtra.copy("source/directory/file.txt", "destination/directory/file.txt", callback);
显然这仍然不一致,但至少不那么冗长。
【问题讨论】:
-
查看他们的源代码,他们似乎只能复制一个文件。我不认为这很重要,但是为了您的意识,您不必在模块上调用 '.ncp()',您可以只使用
require('ncp')并且生成的对象与在其上调用.ncp()相同,因为……原因。他们的代码有点丑。 -
@Paul 你能否提供一个语法示例,以便我知道我在哪里使用错误,谢谢。
-
这仍然是您使用的语法。他们从字面上设置:
module.exports = ncp; ncp.ncp = ncp;不知道为什么。所以它仍然是const ncp = require('ncp'); ncp(src, dest, cb); -
对不起,我应该更清楚,我的意思是你能提供一个使用 ncp 复制单个文件的示例。上面的语法对我不起作用。谢谢。
-
我知道它不起作用;我要说的是单个文件没有不同的语法。他们在后台使用 fs.stats 来确定您是否正在抓取单个文件或目录,然后为每种情况调用不同的私有函数。这也是 cmets 不是答案 b/c 根据我在其源代码中看到的内容,我看不出您的代码无法正常工作的充分理由。
标签: node.js