Javascript 无法将参数从命令传递到grunt文件

Javascript 无法将参数从命令传递到grunt文件,javascript,gruntjs,jasmine,protractor,Javascript,Gruntjs,Jasmine,Protractor,我将下面的代码用于量角器配置文件中使用的参数 protractor: { options: { keepAlive: true, configFile: "test/config.js", args:{ params:{ user:"user1", password:"password1" } }

我将下面的代码用于量角器配置文件中使用的参数

protractor: {

      options: {
        keepAlive: true,
        configFile: "test/config.js",
        args:{
            params:{
                user:"user1",
                password:"password1"

            }
        }
      },
并在量角器配置文件中检索为browser.params.user、browser.params.password

这些是工作文件。 我想从命令更改用户和密码值。
如何更改值?

这是一个简单的解决方法:

将参数传递给grunt任务时:

grunt e2e --user=alex --password=password
它可以作为

grunt.option('user')
然后,您可以使用以下命令编辑配置中的值:

var protConfig = grunt.config.get('protractor');
protConfig.options['someKey']=newValue;
grunt.config('protractor', protConfig);
grunt.task.run('protractor');
我不确定这是最好的方法,但对我来说效果很好。
还请注意,我们正在包装量角器任务,而不是立即调用它

如何获取量角器规范中的--user参数?

在下面的代码中,我注册了一个任务“MyGragrator”,任务后面的任何参数都将作为参数进入匿名函数:

grunt量角器:dev:pwd

module.exports = function(grunt) {
    grunt.registerTask('myprotractor', function(user, pwd) {
        console.log(user + pwd);
        grunt.config('protractor', {
            options: {
                keepAlive: true,
                configFile: "test/config.js",
                args: {
                    params: {
                        user: user,
                        password: pwd

                    }
                }
            }
        });

        //here I am running the task
        grunt.task.run([
            'protractor'

        ]);
    });
};
如果需要,您可以为量角器配置2个目标,具有一些公共配置,并根据您希望从cmd还是从config设置args

grunt量角器:cmd:dev:pwd

module.exports = function(grunt) {
    grunt.registerTask('myprotractor', function(target, user, pwd) {
        console.log(user + pwd);
        grunt.config('protractor', {
            options: {
                keepAlive: true,
                configFile: "test/config.js"
            },
            cmd: {
                options: {
                    args: {
                        params: {
                            user: user,
                            password: pwd

                        }
                    }
                }
            },
            config: {}
        });


        //here I am running the task with a target
        grunt.task.run([
            'protractor:' + target

        ]);
    });
};