Gruntjs 使用grunt复制文件会生成所有父目录
当我使用以下任务复制一些文件时Gruntjs 使用grunt复制文件会生成所有父目录,gruntjs,Gruntjs,当我使用以下任务复制一些文件时 copy: { tmp: { src: 'lib/public/**', dest: 'tmp/' } } 这是我的消息来源 |_lib |_public |_ dir1 |_ dir2 |_ index.html copy方法中的目录结构如下所示 |_tmp |_lib
copy: {
tmp: {
src: 'lib/public/**',
dest: 'tmp/'
}
}
这是我的消息来源
|_lib
|_public
|_ dir1
|_ dir2
|_ index.html
copy方法中的目录结构如下所示
|_tmp
|_lib
|_public
|_ dir1
|_ dir2
|_ index.html
我希望目录看起来更像这样
|_tmp
|_ dir1
|_ dir2
|_ index.html
换句话说,我希望将
lib/public
中的所有内容复制到tmp
是否需要启用其他选项 您将需要展平
选项。您可以阅读我的答案(不完全是副本),但它相当简单:
copy: {
tmp: {
src: 'lib/public/**',
dest: 'tmp/',
flatten: true,
expand: true
}
}
更新:要在不使用根源目录的情况下复制内容(文件夹和文件),可以使用
cwd
选项。看起来你是根据你的评论发现的
copy: {
tmp: {
expand: true,
cwd: 'lib/public',
src: '**',
dest: 'tmp/'
}
}
您可以使用
展平
和过滤器
属性来实现这一点。由于您希望文件没有父目录,因此需要指定'isFile'
过滤器。要使用展平
,您需要启用展开
选项。本文件涵盖本节中的此选项和其他选项
您的配置应类似于以下内容:
copy: {
tmp: {
expand: true,
flatten: true,
src: 'lib/public/**',
dest: 'tmp/',
filter: 'isFile'
}
}
请注意,共享相同名称的文件将被覆盖(嵌套较深的文件将覆盖树中较高的文件)。我对示例进行了编辑,以使其更加具体。你举的例子几乎是我所需要的,但不完全是。如果你有时间,也许你可以提供一个替代答案?实际上,你发布的链接帮助我发现我真正需要做的是这个tmp:{expand:true,cwd:'lib/public',src:'**',dest:'tmp/'}@EdgarMartinez updated。看起来你已经找到解决方案了!我对我的示例进行了编辑,使其更加具体。你举的例子几乎是我所需要的,但不完全是。如果你有时间,也许你可以提供一个替代答案?我真正想避免的是复制父文件夹以及其中的内容,包括Directoriesaaah。。。我懂了。嗯,我认为@ahmad mageed的答案在更新后相当全面。很高兴你明白了。