我正在使用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值传递回生成器以供进一步使用。鉴于上面的当前代码,它返回“未定义”。
有什么想法吗?谢谢!
答案 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。