我正在尝试将整个目录复制为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 为什么要复制到错误的文件夹?我希望我已经足够清楚地解释了。提前谢谢!
答案 0 :(得分:1)
所以显然我不能使用 destinationRoot()。相反,我必须使用 destinationPath()。我不确定为什么,但现在使用 destinationPath()正确复制。