使用Grunt Copy Task时文件树变平
不知道如果我错过了一些东西,但我有以下grunt-contrib-copy任务的设置。
copy: { build: { files: { "server-dist/": "server/**/*.!(coffee)", "client-dist/": "client/**/*.!(coffee)" } } }
client-dist的副本如我所期望的recursion运行通过文件树,但服务器的所有子文件夹平铺到基本文件夹。 任何想法为什么发生这种情况? 这是I / O
server/ views/ errors/ 404.jade layouts/ base.jade
变
server/ errors/ layouts/ base.jade
视图文件夹被完全吹掉。 还有一件事…当我删除!(咖啡)它的作品,但我需要排除咖啡文件,因为我有一个grunt咖啡的手表任务运行。
显然grunt-contrib-copy
任务有一个复杂的逻辑,试图自动检测复制源文件的基本目录(参见相关的问题 )
解决scheme是明确指定basePath
选项:
copy: { build: { files: { "server-dist/": "server/**/*!(.coffee)" }, options: { basePath: 'server' // base directory in the source path } } }
PS我不确定,但是,为什么删除!(.coffee)
改变你的行为。 我在本地机器上尝试了相同的结果,当指定"server/**/*"
而不是"server/**/*.!(coffee)"
(即跳过views
文件夹)
跟进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
– 至less在我的0.4.1版本。 Zacks的评论和包括的链接是非常有益的,特别是基本basePath
已被取代的事实。