2013-05-15 27 views
15

Test kullanımı için node.js kodunda grunt görev oluşturmak ve çalıştırmak istiyorum.Komut satırı olmadan ator ile çalışan görev,

var foo = function() { 
    var grunt = require("grunt"); 

    var options = {"blahblah": null} // ...creating dynamic grunt options, such as concat and jshint 
    grunt.initConfig(options); 
    grunt.registerTask('default', [/*grunt subtasks*/]); 
} 

Ancak bu çalışmaz. Grunt herhangi bir görevi yerine getirmiyor. Komut satırı olmadan dışarıdan zıvana görevini yürütmek için bazı API'nin var olduğundan neredeyse eminim, ancak nasıl yapılacağını bilmiyorum.

Bunu yapmanın bir yolu var mı?

cevap

20

Yapabilirsiniz. Neden şu anda herkesin bunu yapması gerekeceğini bilmiyorum Grunt, komut satırı aracı. UYARI: Grunt'ı bu şekilde çalıştırmanızı önermiyorum. Ama işte burada:

var grunt = require('grunt'); 

// hack to avoid loading a Gruntfile 
// You can skip this and just use a Gruntfile instead 
grunt.task.init = function() {}; 

// Init config 
grunt.initConfig({ 
    jshint: { 
    all: ['index.js'] 
    } 
}); 

// Register your own tasks 
grunt.registerTask('mytask', function() { 
    grunt.log.write('Ran my task.'); 
}); 

// Load tasks from npm 
grunt.loadNpmTasks('grunt-contrib-jshint'); 

// Finally run the tasks, with options and a callback when we're done 
grunt.tasks(['mytask', 'jshint'], {}, function() { 
    grunt.log.ok('Done running tasks.'); 
}); 
+1

Çalışıyor. Çok teşekkür ederim. Web tabanlı bir test ortamı oluşturmak için Grunt'ı dinamik olarak çalıştırmak istedim. Bunu başarmak için, nodeJS kodunda Grunt'ı çalıştırmam ya da Grunt'un CLI komutunu yapmak için exec() - like şeyini kullanmam gerekiyordu. Eskiden daha doğal olduğunu düşündüm. – Kivol

+6

Genellikle bu şekilde test etmek için grunt.util.spawn ({grunt: true, args: ['taskname']}, function() {}) 'işlevini kullanıyorum. Grunt'ın bir kullanıcının Grunt'ı nasıl çalıştırdığına daha çok yaklaşır. –

+0

Teşekkürler! Ben bu şekilde deneyeceğim. – Kivol

13

Sen hırıltı millet tarafından tutulan bir proje olan bunu yapar ve hangi grunt-cli bakarak kodundan hırıltı çalıştırmak için nasıl ilham alabilirsiniz.

Grunt, grunt-cli/bin/grunt kodundan başlatıldı ve grunt/lib/grunt/cli.js'daki seçenekler hakkında daha fazla bilgi edinebilirsiniz.

böyle özel projede kullanmak:

var grunt = require("grunt"); 
grunt.cli({ 
    gruntfile: __dirname + "/path/to/someGruntfile.js", 
    extra: {key: "value"} 
}); 

anahtar "ekstra" İşte

grunt.option("extra") olarak gruntfile içinden satışa sunulacak çalıştırmak için alternatif bir yol tanımlayan bir bloggpost olduğunu Bir grunt görevi: http://andrewduthie.com/2014/01/14/running-grunt-tasks-without-grunt-cli/

+0

Bu ilginç bir blog yazarıdır. İşte güncellenmiş link: http://andrewduthie.com/2014/01/14/running-grunt-tasks-without-grunt-cli –

İlgili konular