Gruntjs 复制多个文件夹时出现问题

Gruntjs 复制多个文件夹时出现问题,gruntjs,grunt-contrib-copy,Gruntjs,Grunt Contrib Copy,我是格伦特的新手,所以我需要一些帮助 我在官方gruntjs/grunt contrib副本上问了这个问题,但没有得到回应 我想使用grunt contrib copy将文件从某个目录复制到另一个目录,它们如下所示: parentpath/ (source file) /assets/sass/bootstrap/ /assets/sass/fontawesome/ /assets/sass/storms/ /assets/sass/wordpress/

我是格伦特的新手,所以我需要一些帮助

我在官方
gruntjs/grunt contrib副本上问了这个问题,但没有得到回应

我想使用
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
我的GrunFile是这样配置的:

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'
] );
有人知道我做错了什么吗


谢谢

我认为您只需要稍微试验一下目录和文件规范。有几件事可以尝试:

  • 将全局模式添加到源路径,而不仅仅是目录名,如
    ../bootstrap/***.scss
  • 在目标路径中添加一个尾随斜杠,使其明显成为一个目录,如
    dest:'/'
    。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 %>/'
        },
    
    复制:{
    parenttheme\u引导程序:{
    src:“/assets/sass/bootstrap/***.scss”,
    目的地:'/'
    },
    家长主题:{
    src:“/assets/sass/fontawesome/***.scss”,
    目的地:'/'
    },
    
    多亏了@James的建议,我通过以下方式完成了这项工作:

            sf2_bootstrap: {
                files: [{
                    expand: true,
                    cwd: '<%= dirs.sfpath %>/assets/sass/bootstrap/',
                    src: '**/*.scss',
                    dest: '<%= dirs.sass %>/bootstrap/'
                }]
            },
    
    sf2\u引导程序:{
    档案:[{
    是的,
    cwd:“/assets/sass/bootstrap/”,
    src:“***.scss”,
    目标:'/bootstrap/'
    }]
    },
    
    现在我的文件已正确复制


    James solution,复制了我所有的文件,但是复制到了错误的目录,我不知道为什么。

    Hi,@James!Sry需要很长时间才能回答。我尝试了你的解决方案,它很有效!但是文件被复制到了
    childpath/parentpath/assets/…
    而不是
    childpath/assets/…
    。我只是更改了你的建议和我定义的目录
    sass:'../assets/sass'
    parentpath:'../parentpath'
    。这里有什么想法吗?这很有意义,输出路径将与cwd参数相关。
            sf2_bootstrap: {
                files: [{
                    expand: true,
                    cwd: '<%= dirs.sfpath %>/assets/sass/bootstrap/',
                    src: '**/*.scss',
                    dest: '<%= dirs.sass %>/bootstrap/'
                }]
            },