复制多个文件夹时出现问题
Problems copying many folders
我是 g运行t 的新手,所以我需要一些帮助。
我在官方gruntjs/grunt-contrib-copy
上问了这个问题,但没有得到回应。
我想使用 grunt-contrib-copy
将文件从某个目录复制到另一个目录,它们看起来像这样:
parentpath/ (source file)
/assets/sass/bootstrap/
/assets/sass/fontawesome/
/assets/sass/storms/
/assets/sass/wordpress/
/assets/sass/_layout.scss
/assets/sass/_woocommerce.scss
childpath/ (destiny file)
/assets/sass/bootstrap/
/assets/sass/fontawesome/
/assets/sass/storms/
/assets/sass/wordpress/
/assets/sass/_layout.scss
/assets/sass/_woocommerce.scss
我的 g运行t 文件是这样配置的:
copy: {
parenttheme_bootstrap: {
src: '<%= dirs.parentpath %>/assets/sass/bootstrap',
dest: '<%= dirs.sass %>'
},
parenttheme_fontawesome: {
src: '<%= dirs.parentpath %>/assets/sass/fontawesome',
dest: '<%= dirs.sass %>'
},
parenttheme_storms: {
src: '<%= dirs.parentpath %>/assets/sass/storms',
dest: '<%= dirs.sass %>'
},
parenttheme_wordpress: {
src: '<%= dirs.parentpath %>/assets/sass/wordpress',
dest: '<%= dirs.sass %>'
},
parenttheme_partials: {
files: [{
expand: true,
cwd: '<%= dirs.parentpath %>/assets/sass/',
src: '_layout.scss',
dest: '<%= dirs.sass %>'
},
{
expand: true,
cwd: '<%= dirs.parentpath %>/assets/sass/',
src: '_woocommerce.scss',
dest: '<%= dirs.sass %>'
}]
}
}
// parent Task
grunt.registerTask( 'parent', [
'copy:parenttheme_bootstrap',
'copy:parenttheme_fontawesome',
'copy:parenttheme_storms',
'copy:parenttheme_wordpress',
'copy:parenttheme_partials',
'sass',
'postcss'
] );
当我运行父任务时,/assets/sass/bootstrap文件夹被正确复制到他的天命。部分文件也是如此。
但由于某种原因,所有其他文件夹都没有被复制,我没有收到任何错误!
运行 g运行t parent --verbose 我明白了:
Running tasks: parent
Running "parent" task
Running "copy:parenttheme_bootstrap" (copy) task
Verifying property copy.parenttheme_bootstrap exists in config...OK
Files: ../../childpath/assets/sass/bootstrap -> ../assets/sass
Options: encoding="utf8", processContent=false, processContentExclude=[], timestamp=false, mode=false
Creating ../assets/sass
Created 1 directory
Running "copy:parenttheme_fontawesome" (copy) task
Verifying property copy.parenttheme_fontawesome exists in config...OK
Files: ../../childpath/assets/sass/fontawesome -> ../assets/sass
Options: encoding="utf8", processContent=false, processContentExclude=[], timestamp=false, mode=false
Creating ../assets/sass
Created 1 directory
Running "copy:parenttheme_storms" (copy) task
Verifying property copy.parenttheme_storms exists in config...OK
Files: ../../childpath/assets/sass/storms -> ../assets/sass
Options: encoding="utf8", processContent=false, processContentExclude=[], timestamp=false, mode=false
Creating ../assets/sass
Created 1 directory
Running "copy:parenttheme_wordpress" (copy) task
Verifying property copy.parenttheme_wordpress exists in config...OK
Files: ../../childpath/assets/sass/wordpress -> ../assets/sass
Options: encoding="utf8", processContent=false, processContentExclude=[], timestamp=false, mode=false
Creating ../assets/sass
Created 1 directory
Running "copy:parenttheme_partials" (copy) task
Verifying property copy.parenttheme_partials exists in config...OK
Files: ../../childpath/assets/sass/_layout.scss -> ../assets/sass/_layout.scss
Files: ../../childpath/assets/sass/_woocommerce.scss -> ../assets/sass/_woocommerce.scss
Options: encoding="utf8", processContent=false, processContentExclude=[], timestamp=false, mode=false
Copying ../../childpath/assets/sass/_layout.scss -> ../assets/sass/_layout.scss
Reading ../../childpath/assets/sass/_layout.scss...OK
Writing ../assets/sass/_layout.scss...OK
Copying ../../childpath/assets/sass/_woocommerce.scss -> ../assets/sass/_woocommerce.scss
Reading ../../childpath/assets/sass/_woocommerce.scss...OK
Writing ../assets/sass/_woocommerce.scss...OK
Copied 2 files
有人知道我做错了什么吗?
谢谢!
我认为您只需要稍微试验一下您的目录和文件规范。一些尝试:
- 向您的源路径添加通配模式,而不仅仅是目录名称,例如
.../bootstrap/**/*.scss
.
- 向目标路径添加尾部斜杠,使其明显是一个目录,如
dest: '<%= dirs.sass %>/'
。 grunt 可能正在复制到单个文件输出,而不是目录树。
一个小例子:
copy: {
parenttheme_bootstrap: {
src: '<%= dirs.parentpath %>/assets/sass/bootstrap/**/*.scss',
dest: '<%= dirs.sass %>/'
},
parenttheme_fontawesome: {
src: '<%= dirs.parentpath %>/assets/sass/fontawesome/**/*.scss',
dest: '<%= dirs.sass %>/'
},
感谢@James 的建议,我通过更改为以下内容来完成这项工作:
sf2_bootstrap: {
files: [{
expand: true,
cwd: '<%= dirs.sfpath %>/assets/sass/bootstrap/',
src: '**/*.scss',
dest: '<%= dirs.sass %>/bootstrap/'
}]
},
现在我的文件已正确复制。
James解决方案,复制了我所有的文件,但是复制到错误的目录,我不知道为什么。
我是 g运行t 的新手,所以我需要一些帮助。
我在官方gruntjs/grunt-contrib-copy
上问了这个问题,但没有得到回应。
我想使用 grunt-contrib-copy
将文件从某个目录复制到另一个目录,它们看起来像这样:
parentpath/ (source file)
/assets/sass/bootstrap/
/assets/sass/fontawesome/
/assets/sass/storms/
/assets/sass/wordpress/
/assets/sass/_layout.scss
/assets/sass/_woocommerce.scss
childpath/ (destiny file)
/assets/sass/bootstrap/
/assets/sass/fontawesome/
/assets/sass/storms/
/assets/sass/wordpress/
/assets/sass/_layout.scss
/assets/sass/_woocommerce.scss
我的 g运行t 文件是这样配置的:
copy: {
parenttheme_bootstrap: {
src: '<%= dirs.parentpath %>/assets/sass/bootstrap',
dest: '<%= dirs.sass %>'
},
parenttheme_fontawesome: {
src: '<%= dirs.parentpath %>/assets/sass/fontawesome',
dest: '<%= dirs.sass %>'
},
parenttheme_storms: {
src: '<%= dirs.parentpath %>/assets/sass/storms',
dest: '<%= dirs.sass %>'
},
parenttheme_wordpress: {
src: '<%= dirs.parentpath %>/assets/sass/wordpress',
dest: '<%= dirs.sass %>'
},
parenttheme_partials: {
files: [{
expand: true,
cwd: '<%= dirs.parentpath %>/assets/sass/',
src: '_layout.scss',
dest: '<%= dirs.sass %>'
},
{
expand: true,
cwd: '<%= dirs.parentpath %>/assets/sass/',
src: '_woocommerce.scss',
dest: '<%= dirs.sass %>'
}]
}
}
// parent Task
grunt.registerTask( 'parent', [
'copy:parenttheme_bootstrap',
'copy:parenttheme_fontawesome',
'copy:parenttheme_storms',
'copy:parenttheme_wordpress',
'copy:parenttheme_partials',
'sass',
'postcss'
] );
当我运行父任务时,/assets/sass/bootstrap文件夹被正确复制到他的天命。部分文件也是如此。
但由于某种原因,所有其他文件夹都没有被复制,我没有收到任何错误!
运行 g运行t parent --verbose 我明白了:
Running tasks: parent
Running "parent" task
Running "copy:parenttheme_bootstrap" (copy) task
Verifying property copy.parenttheme_bootstrap exists in config...OK
Files: ../../childpath/assets/sass/bootstrap -> ../assets/sass
Options: encoding="utf8", processContent=false, processContentExclude=[], timestamp=false, mode=false
Creating ../assets/sass
Created 1 directory
Running "copy:parenttheme_fontawesome" (copy) task
Verifying property copy.parenttheme_fontawesome exists in config...OK
Files: ../../childpath/assets/sass/fontawesome -> ../assets/sass
Options: encoding="utf8", processContent=false, processContentExclude=[], timestamp=false, mode=false
Creating ../assets/sass
Created 1 directory
Running "copy:parenttheme_storms" (copy) task
Verifying property copy.parenttheme_storms exists in config...OK
Files: ../../childpath/assets/sass/storms -> ../assets/sass
Options: encoding="utf8", processContent=false, processContentExclude=[], timestamp=false, mode=false
Creating ../assets/sass
Created 1 directory
Running "copy:parenttheme_wordpress" (copy) task
Verifying property copy.parenttheme_wordpress exists in config...OK
Files: ../../childpath/assets/sass/wordpress -> ../assets/sass
Options: encoding="utf8", processContent=false, processContentExclude=[], timestamp=false, mode=false
Creating ../assets/sass
Created 1 directory
Running "copy:parenttheme_partials" (copy) task
Verifying property copy.parenttheme_partials exists in config...OK
Files: ../../childpath/assets/sass/_layout.scss -> ../assets/sass/_layout.scss
Files: ../../childpath/assets/sass/_woocommerce.scss -> ../assets/sass/_woocommerce.scss
Options: encoding="utf8", processContent=false, processContentExclude=[], timestamp=false, mode=false
Copying ../../childpath/assets/sass/_layout.scss -> ../assets/sass/_layout.scss
Reading ../../childpath/assets/sass/_layout.scss...OK
Writing ../assets/sass/_layout.scss...OK
Copying ../../childpath/assets/sass/_woocommerce.scss -> ../assets/sass/_woocommerce.scss
Reading ../../childpath/assets/sass/_woocommerce.scss...OK
Writing ../assets/sass/_woocommerce.scss...OK
Copied 2 files
有人知道我做错了什么吗?
谢谢!
我认为您只需要稍微试验一下您的目录和文件规范。一些尝试:
- 向您的源路径添加通配模式,而不仅仅是目录名称,例如
.../bootstrap/**/*.scss
. - 向目标路径添加尾部斜杠,使其明显是一个目录,如
dest: '<%= dirs.sass %>/'
。 grunt 可能正在复制到单个文件输出,而不是目录树。
一个小例子:
copy: {
parenttheme_bootstrap: {
src: '<%= dirs.parentpath %>/assets/sass/bootstrap/**/*.scss',
dest: '<%= dirs.sass %>/'
},
parenttheme_fontawesome: {
src: '<%= dirs.parentpath %>/assets/sass/fontawesome/**/*.scss',
dest: '<%= dirs.sass %>/'
},
感谢@James 的建议,我通过更改为以下内容来完成这项工作:
sf2_bootstrap: {
files: [{
expand: true,
cwd: '<%= dirs.sfpath %>/assets/sass/bootstrap/',
src: '**/*.scss',
dest: '<%= dirs.sass %>/bootstrap/'
}]
},
现在我的文件已正确复制。
James解决方案,复制了我所有的文件,但是复制到错误的目录,我不知道为什么。