等待 this.fs.copyTpl 在 Yeoman Generator 上完成
Wait for this.fs.copyTpl to complete on Yeoman Generator
我的 Yeoman 生成器中有以下代码:
_appTemplate(src, dest, addToHG, scope) {
let done = this.async();
if (src === null || dest === null) {
return;
}
let fullPathSrc = this.templatePath(src);
let fullPathDest = this.destinationPath(path.join('src', dest));
this.fs.copyTpl(fullPathSrc, fullPathDest, scope);
if (addToHG) {
this.log('Adding:' + fullPathDest + ' to HG now...');
this.spawnCommand('hg', ['add', fullPathDest]).on('close', done);
} else {
done();
}
}
但我看到尝试将文件添加到 HG (mercurial) 的尝试发生得太快,文件不存在。如何等到 copyTpl 完成?
我尝试了以下方法,但都没有成功:
this.fs.copyTpl(fullPathSrc, fullPathDest, scope).then(() => {});
和
this.fs.copyTpl(fullPathSrc, fullPathDest, scope).on('end', () => {});
但是似乎支持下层模式,我找不到 this.fs.copyTpl() 的实际文档。
提前致谢!
当然,在发布我的问题几分钟后,我找到了 this.fs.copyTpl() 的文档。原来它是一个 "in memory" 文件系统包,直到稍后才将文件提交到磁盘。
https://github.com/SBoudrias/mem-fs-editor#copyfrom-to-options
这是一个可行的解决方案,但我不知道它是否理想。我愿意接受这里的建议。
_appTemplate(src, dest, addToHG, scope) {
let done = this.async();
if (src === null || dest === null) {
return;
}
let fullPathSrc = this.templatePath(src);
let fullPathDest = this.destinationPath(path.join('src', dest));
this.fs.copyTpl(fullPathSrc, fullPathDest, scope);
this.fs.commit([], () => {
if (addToHG) {
this.log('Adding:' + fullPathDest + ' to HG now...');
this.spawnCommand('hg', ['add', fullPathDest]).on('close', done);
} else {
done();
}
});
}
我的 Yeoman 生成器中有以下代码:
_appTemplate(src, dest, addToHG, scope) {
let done = this.async();
if (src === null || dest === null) {
return;
}
let fullPathSrc = this.templatePath(src);
let fullPathDest = this.destinationPath(path.join('src', dest));
this.fs.copyTpl(fullPathSrc, fullPathDest, scope);
if (addToHG) {
this.log('Adding:' + fullPathDest + ' to HG now...');
this.spawnCommand('hg', ['add', fullPathDest]).on('close', done);
} else {
done();
}
}
但我看到尝试将文件添加到 HG (mercurial) 的尝试发生得太快,文件不存在。如何等到 copyTpl 完成?
我尝试了以下方法,但都没有成功:
this.fs.copyTpl(fullPathSrc, fullPathDest, scope).then(() => {});
和
this.fs.copyTpl(fullPathSrc, fullPathDest, scope).on('end', () => {});
但是似乎支持下层模式,我找不到 this.fs.copyTpl() 的实际文档。
提前致谢!
当然,在发布我的问题几分钟后,我找到了 this.fs.copyTpl() 的文档。原来它是一个 "in memory" 文件系统包,直到稍后才将文件提交到磁盘。
https://github.com/SBoudrias/mem-fs-editor#copyfrom-to-options
这是一个可行的解决方案,但我不知道它是否理想。我愿意接受这里的建议。
_appTemplate(src, dest, addToHG, scope) {
let done = this.async();
if (src === null || dest === null) {
return;
}
let fullPathSrc = this.templatePath(src);
let fullPathDest = this.destinationPath(path.join('src', dest));
this.fs.copyTpl(fullPathSrc, fullPathDest, scope);
this.fs.commit([], () => {
if (addToHG) {
this.log('Adding:' + fullPathDest + ' to HG now...');
this.spawnCommand('hg', ['add', fullPathDest]).on('close', done);
} else {
done();
}
});
}