Yeoman:从缓存中安装依赖项

时间:2013-12-21 20:59:44

标签: javascript node.js yeoman yeoman-generator

我想在调试我的生成器或离线工作时添加一个选项,从缓存中下载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

2 个答案:

答案 0 :(得分:2)

您无法直接从#installDependencies指定选项,请参阅:https://github.com/yeoman/generator/blob/master/lib/actions/install.js#L44-L69

您可以为#npmInstallbowerInstall 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将定义是否使用缓存。