Javascript 使用Grunt复制任务时的文件树展平
不确定是否遗漏了某些内容,但我为grunt contrib复制任务设置了以下grunt设置Javascript 使用Grunt复制任务时的文件树展平,javascript,node.js,gruntjs,Javascript,Node.js,Gruntjs,不确定是否遗漏了某些内容,但我为grunt contrib复制任务设置了以下grunt设置 copy: { build: { files: { "server-dist/": "server/**/*.!(coffee)", "client-dist/": "client/**/*.!(coffee)" } } } 客户端dist按我所期望的那样通过文件树递归地进行复制,但服务器dist的所有子文件夹都被展平到基本文件夹。知道为什么会这样吗?这是
copy: {
build: {
files: {
"server-dist/": "server/**/*.!(coffee)",
"client-dist/": "client/**/*.!(coffee)"
}
}
}
客户端dist按我所期望的那样通过文件树递归地进行复制,但服务器dist的所有子文件夹都被展平到基本文件夹。知道为什么会这样吗?这是i/o
server/
views/
errors/
404.jade
layouts/
base.jade
变成
server/
errors/
layouts/
base.jade
“视图”文件夹完全被炸开。还有一件事…当我搬走的时候!(coffee)它可以工作,但我需要排除coffee文件,因为我正在运行grunt coffee watch任务。显然,
grunt contrib copy
任务具有复杂的逻辑,它试图自动检测复制源文件的基本目录(请参阅)
解决方案是显式指定选项:
p.S.我不确定为什么要删除
!(.咖啡)
为您改变行为。我在本地计算机上尝试了相同的方法,并在指定“server/****”
而不是“server/****!(coffee)
(即跳过视图
文件夹)时得到了相同的结果zacks评论的后续内容:
copy: {
mytask: {
files: [
{expand:true, cwd:'dev-js/abc/', dest:'js/test/', src:['def.js']}
]
}
}
这会将文件
/dev js/abc/def.js
复制到/js/test/def.js
——至少在我的0.4.1版本上是这样。Zacks的评论和包含的链接非常有用,尤其是basePath
已被替换。太棒了!这是可行的,但还有一件事……在我的示例中,有两个基本路径服务器+客户端。我不希望有两个单独的复制任务buildServer+buildClient…如果有必要,我会这样做,但还有其他方法吗。谢谢。很抱歉,我看不出在当前任务的实施中有什么方法可以做到这一点。你可能想就我在回答中链接的问题与贡献者交谈……顺便说一句:basePath
在v0.4.0rc5中更改为cwd
,请参阅:我没想到复制文件会花几个小时才能弄清楚,但哦,这至少帮了我一把。对我来说很有用!最后!!!非常非常感谢你!!!我找了好几个月了!
copy: {
mytask: {
files: [
{expand:true, cwd:'dev-js/abc/', dest:'js/test/', src:['def.js']}
]
}
}