在Yeoman Generator中返回生成的Typekit id

时间:2014-03-14 16:09:01

标签: javascript node.js yeoman yeoman-generator

我正在使用node-typekit在我的Yeoman生成器中创建一个新的Typekit空字体集,以便在我的项目中使用。我能够成功创建工具包,但无法弄清楚如何将工具包ID值返回到Yeoman生成器,因此我可以将必要的Typekit脚本标记值添加到我的网页中。这是我的index.js生成器脚本的一部分:

在index.js的顶部:

var kit = require('typekit');
var typekitID = '';

function setTypekitID(theid) {
    typekitID = theid;
};

应用程序部分:

app: function () {

  var token = 'xxxxxxxxxxxxxxxxxxxxxxxx';
  var split = this.domainname.split('.');
  split.pop();
  var localdomain = split.join('.') + '.dev';

  kit.create(token, {
    name: this.appname,
    badge: false,
    domains: [this.domainname, localdomain],
    families: []
  }, function (err, data) {
    setTypekitID(data.kit.id);
  });

}

如果不是:

setTypekitID(data.kit.id);

我用:

console.log(data.kit.id);

控制台中会显示正确的套件ID。但是,我无法弄清楚如何将回调中的data.kit.id值传递回生成器以供进一步使用。鉴于上面的当前代码,它返回“未定义”。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

没有typekit的任何经验,我猜测kit.create是异步调用。当你进行这样的调用时,生成器需要知道它,所以它可以延迟调用其他方法,直到它知道你的异步回调有机会执行。

尝试这样做:

app: function () {
  var done = this.async(); // this tells the generator, "hang on, yo."
  // ...
  kit.create(token, { /* ... */ }, function (err, data) {
    setTypekitID(data.kit.id);

    done(); // calling this resumes the generator.
  });
}

可以找到默认generator-generator如何使用此功能的示例here