使用以下任务复制某些文件时
copy: {
tmp: {
src: 'lib/public/**',
dest: 'tmp/'
}
}
这是我的来源
|_lib
|_public
|_ dir1
|_ dir2
|_ index.html
复制方法的目录结构如下所示
|_tmp
|_lib
|_public
|_ dir1
|_ dir2
|_ index.html
如果目录看起来更像是
,我更喜欢|_tmp
|_ dir1
|_ dir2
|_ index.html
换句话说,我希望将lib/public
中的所有内容复制到tmp
是否还有其他选项需要启用?
答案 0 :(得分:6)
更新:复制没有根源目录的内容(文件夹和文件),您可以使用cwd
选项。看起来你已根据自己的意见发现了这一点。
copy: {
tmp: {
expand: true,
cwd: 'lib/public',
src: '**',
dest: 'tmp/'
}
}
<小时/> 您可以使用
flatten
和filter
属性来实现此目的。由于您需要没有父目录的文件,因此您需要指定'isFile'
过滤器。要使用flatten
,您需要启用expand
选项。该文档涵盖"Building the files object dynamically"部分下的此选项和其他选项。
您的配置应类似于以下内容:
copy: {
tmp: {
expand: true,
flatten: true,
src: 'lib/public/**',
dest: 'tmp/',
filter: 'isFile'
}
}
请注意,将覆盖共享相同名称的文件(较深的嵌套文件将覆盖树中较高的文件)。
答案 1 :(得分:0)
您需要flatten
选项。您可以阅读我对this other question的回答(不完全相同),但这很简单:
copy: {
tmp: {
src: 'lib/public/**',
dest: 'tmp/',
flatten: true,
expand: true
}
}