Yeoman复制目录无效

时间:2016-08-26 18:17:50

标签: yeoman yeoman-generator

我正在尝试将整个目录复制为Yeoman生成器的一部分。我有多个调用this.fs.copy的函数,除了 fonts assetsdev 之外,它可以按预期工作(大部分)。我无法弄清楚为什么 assetsdev 任务将源文件夹复制到fonts目录而不是我指定的根目录。以下是批量复制目录的三个函数:

    this.props.dotDest = './';
    this.props.srcPath = './assets-dev';
    this.props.destPath = './public/assets';

    dotfiles: function () { // Works as expected. Copies to the root.
        this.fs.copy(
            this.templatePath('dot_files/.*'),
            this.destinationRoot(this.props.dotDest)
        );
    },

    fonts: function () { // Works as expected. Copies to the bootstrap directory.
        var done = this.async();

        this.log( chalk.magenta.bold('Copying /fonts') );
        this.fs.copy(
            this.templatePath('fonts'),
            this.destinationRoot(this.props.destPath + '/fonts/bootstrap')
        )

        done();
    },

    assetsdev: function () { // Does NOT work. Copies to the Bootstrap directory rather than the root.
        var done = this.async();

        this.log( chalk.magenta.bold('Copy assets-dev') );
        this.fs.copy(
            this.templatePath('assets-dev'),
            this.destinationRoot(this.props.srcPath)
        );

        done();
    },

我希望得到的文件夹结构为

    -assets-dev
    -public
        -assets
            -fonts
                -bootstrap
                    -fontfile
                    -fontfile
                    -fontfile

但相反它正在产生......

    -public
        -assets
            -fonts
                -bootstrap
                    -assets-dev
                    -fontfile
                    -fontfile
                    -fontfile

......我无法弄清楚原因。我甚至尝试使用async()方法,以防它以异步方式运行,并且当 assetsdev 函数运行时碰巧在该目录中。

有谁知道 assetsdev 为什么要复制到错误的文件夹?我希望我已经足够清楚地解释了。提前谢谢!

1 个答案:

答案 0 :(得分:1)

所以显然我不能使用 destinationRoot()。相反,我必须使用 destinationPath()。我不确定为什么,但现在使用 destinationPath()正确复制。