我想在调试我的生成器或离线工作时添加一个选项,从缓存中下载npm和bower内容(分别使用--cache-min 999999
和--offline
)。
目前,这是我的代码(它们都安装依赖项并调用grunt bower
):
CallumGenerator.prototype.installDeps = function () {
var cb = this.async();
this.installDependencies({
skipInstall: this.options['skip-install'],
callback: function () {
this.spawnCommand('grunt', ['bower'])
.on('close', function () {
cb();
});
}.bind(this)
});
};
看起来我很可能需要手动拨打.npmInstall()
和.bowerInstall()
才能指定选项(我认为?),但我不知道如何指定任何选择。为了澄清,我将在控制台中执行此操作:
npm install --cache-min 999999 --save-dev grunt-contrib-less
bower install --offline --save jquery#1.10.2
答案 0 :(得分:2)
您无法直接从#installDependencies
指定选项,请参阅:https://github.com/yeoman/generator/blob/master/lib/actions/install.js#L44-L69
您可以为#npmInstall
和bowerInstall
https://github.com/yeoman/generator/blob/master/lib/actions/install.js#L121-L143
您传递的options
采用对象哈希的形式,将由dargs
节点模块进行解析,因此您should follow the module conventions for declaring options
答案 1 :(得分:0)
我使用的代码,对任何人来说都应该没用(你可能想要摆脱最终的回调):
CallumGenerator.prototype.installDeps = function () {
var cb = this.async();
this.npmInstall(null, {
skipInstall: this.options['skip-install'],
cacheMin: this.cachedDeps ? 999999 : 0
}, function () {
this.bowerInstall(null, {
skipInstall: this.options['skip-install'],
offline: this.cachedDeps
}, function () {
this.spawnCommand('grunt', ['bower'])
.on('close', function () {
cb();
});
}.bind(this));
}.bind(this));
};
工作正常。 this.cachedDeps
将定义是否使用缓存。