Passing a variable to PhantomJS via exec

后端 未结 2 2073
刺人心
刺人心 2021-01-05 04:35

I\'m getting started with Grunt and wanting to pass a variable to a PhantomJS script I\'m running via exec. What I want to be able to do is pass a url in for the script to t

2条回答
  •  情深已故
    2021-01-05 04:45

    Here is an easy way to pass and pick args that are applicable. Very flexible and easy to maintain.


    Use like:

    phantomjs tests/script.js --test-id=457 --log-dir=somedir/
    

    OR

    phantomjs tests/script.js --log-dir=somedir/ --test-id=457
    

    OR

    phantomjs tests/script.js --test-id=457 --log-dir=somedir/
    

    OR

    phantomjs tests/script.js --test-id=457
    

    Script:

    var system = require('system');
    // process args
    var args = system.args;
    
    // these args will be processed
    var argsApplicable = ['--test-id', '--log-dir'];
    // populated with the valid args provided in availableArgs but like argsValid.test_id
    var argsValid = {};
    
    if (args.length === 1) {
      console.log('Try to pass some arguments when invoking this script!');
    } else {
      args.forEach(function(arg, i) {
        // skip first arg which is script name
        if(i != 0) {
          var bits = arg.split('=');
          //console.log(i + ': ' + arg);
          if(bits.length !=2) {
            console.log('Arguement has wrong format: '+arg);
          }
          if(argsApplicable.indexOf(bits[0]) != -1) {
            var argVar = bits[0].replace(/\-/g, '_');
            argVar = argVar.replace(/__/, '');
            argsValid[argVar] = bits[1];
          }
        }
      });
    }
    // enable below to test args
    //require('utils').dump(argsValid);
    //phantom.exit();
    

提交回复
热议问题