Ответ 1
Все это объясняется на странице grunt.option.
В вашем случае вы можете получить значение myParam
с помощью:
var target = grunt.option('myParam');
У меня есть файл сборки 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
Как мне сделать что-то вроде этого?
Все это объясняется на странице grunt.option.
В вашем случае вы можете получить значение myParam
с помощью:
var target = grunt.option('myParam');
Альтернативный способ: вы можете использовать массив process.argv
, как вы можете в обычном приложении Node.
GruntJS, конечно же, построен на NodeJS.
Я использовал этот метод, чтобы перенаправить мои аргументы командной строки Grunt на мой Node процесс, вызванный grunt-nodemon
.
Я сделал пример использования, где я могу передать модуль, где я хочу, чтобы мой 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']);
}
Вы также можете использовать массив 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