Подтвердить что ты не робот

Параметры командной строки Grunt

У меня есть файл сборки Grunt. Мой файл сборки имеет задачу, которая выглядит следующим образом:

myTask: {
  options: {
    configFile: "config/default.js",
    args: {   }
  },
  dev: {
    configFile: 'config/local.js',
    options: { args: {} },
  },
  test: {
    configFile: 'config/remote.js',
    options: { args: {} }
  }
}

...

grunt.registerTask('customTask', ['myTask:dev']);
grunt.registerTask('customTask-Test', ['myTask:test']);

В настоящее время я могу запустить из командной строки следующее:

> grunt customTask

Все работает отлично. Однако мне нужно добавить возможность сделать что-то вроде этого:

> grunt customTask --myParam=myValue

Мне нужно посмотреть значение myParam в моей целевой задаче "dev". Однако я не могу понять, как это сделать. Я был бы рад, если бы смог распечатать значение myParam, когда myTask: dev запущен. Другими словами, Я бы хотел увидеть следующее при запуске

> grunt customTask

> grunt customTask --myParam=hello
You entered hello

> grunt customTask-Test

> grunt customTask-Test --myParam=hello

Как мне сделать что-то вроде этого?

4b9b3361

Ответ 1

Все это объясняется на странице grunt.option.

В вашем случае вы можете получить значение myParam с помощью:

var target = grunt.option('myParam');

Ответ 2

Альтернативный способ: вы можете использовать массив process.argv, как вы можете в обычном приложении Node.

GruntJS, конечно же, построен на NodeJS.

Я использовал этот метод, чтобы перенаправить мои аргументы командной строки Grunt на мой Node процесс, вызванный grunt-nodemon.

Ответ 3

Я сделал пример использования, где я могу передать модуль, где я хочу, чтобы мой css.min был создан через эту командную строку:

> grunt cssmin --target=my_module 

Gruntfile.js

module.exports = function(grunt) {    
 var module = grunt.option('target'); //get value of target, my_module
 var cssminPath = 'assets/' + module + '/css/all.css';

 grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),

    cssmin:{
        css: {
            files: [{
                    src: [
                        'bower_components/bootstrap/dist/css/bootstrap.min.css',
                    ],
                    dest: cssminPath
                }]
        }
    },
  });
  grunt.loadNpmTasks('grunt-contrib-cssmin');
  grunt.registerTask('default', ['cssmin']);
}

Ответ 4

Вы также можете использовать массив process.argv te, читающий командные строки args из grunt

var args = process.argv;
runScript(args[2], args[3]);

первый и второй аргументы - это команда node и имя script.

execute: {
    target: {
      options: {
         args : [arg1, arg2]
      },
      src: ['script.js']
    }
}

используя grunt-execute