在我的自定义Yeoman生成器中,我只想在安装了所有Bower组件之后进行一些文件复制。目前,在index.js中回调如下所示:
var SiteGenerator = module.exports = function SiteGenerator(args, options, config) {
yeoman.generators.Base.apply(this, arguments);
this.on('end', function () {
this.installDependencies({
skipInstall: options['skip-install'],
callback: function () {
this.copy('assets/bower_components/wordpress/index.php', 'app/index.php');
}.bind(this)
});
});
this.pkg = JSON.parse(this.readFileAsString(path.join(__dirname, '../package.json')));
};但是,显然this引用的是原始生成器,而不是刚刚生成的站点。因此,在我尝试过的SiteGenerator.prototype.app = function app()回调中,创建和复制目录的生成器函数是installDependencies:
SiteGenerator.prototype.app.copy()
但这显然产生了一个错误。
安装了Bower组件之后,我如何访问我新创建的目录?
发布于 2013-10-31 09:05:51
我发现访问项目目录的方法是:process.cwd()
因此,回调函数应该如下所示:
var fs = require('fs');
var SiteGenerator = module.exports = function SiteGenerator(args, options, config) {
yeoman.generators.Base.apply(this, arguments);
this.on('end', function () {
this.installDependencies({
skipInstall: options['skip-install'],
callback: function () {
var projectDir = process.cwd();
fs.createReadStream(projectDir + '/bower_components/wordpress/index.php').pipe(fs.createWriteStream(projectDir + '/app/index.php'));
}.bind(this)
});
});
this.pkg = JSON.parse(this.readFileAsString(path.join(__dirname, '../package.json')));
};https://stackoverflow.com/questions/19582786
复制相似问题