如何让yeoman自动覆盖文件?

时间:2014-05-12 19:00:06

标签: yeoman

我有一个自定义生成器,我正在为它编写一些测试。在app.run()来电之前,我已经有app.options['skip-install'] = true来阻止 npm 运行。但我也需要它来自动覆盖文件。

在整个安装过程中,我得到[?] Overwrite client/file.js? (Ynaxdh)并需要它为我自动回答。

我尝试了app.options.force = true,但似乎没有做任何事情。

我正在app安装中运行:

function installApp(obj, opts, done) {
  helpers.mockPrompt(obj.app, opts);
  obj.app.options['skip-install'] = true;
  obj.app.run({}, function () {
    async.series([
      function (cb) {
        if (opts._extras.addPage) {
          installAppPage(obj, cb);
        } else {
          cb();
        }
      }
    ], done);
  });
}

然后我想用这个运行一个子生成器:

function installAppPage(obj, done) {
  helpers.mockPrompt(obj.page, {
    pageName: 'webPage',
    pageType: 'web'
  });
  obj.page.args = ['--force'];  // This isn't working
  obj.page.options.force;       // This isn't working either
  obj.page.run([], function () {
    helpers.mockPrompt(obj.page, {
      pageName: 'mobilePage',
      pageType: 'mobile'
    });
    obj.page.run({}, function () {
      done();
    });
  });
}

页面的子生成器修改文件。我需要覆盖它,以便我可以测试它。我该怎么强迫它?我无法在运行测试时提示,它需要自动化。

1 个答案:

答案 0 :(得分:6)

我认为您正在寻找conflicter.force

obj.page.conflicter.force = true;