[英]Programmatically controlling Grunt.js
我希望能夠訪問grunt生態系統中的許多可用插件和任務,以使我的生活更輕松,但是我想控制何時以及如何運行每個任務。 最重要的是,我想要一種以編程方式運行grunt任務的方法,而不是從帶有Gruntfile
的文件夾中的命令行運行grunt
的Gruntfile
。 因此,我開始在grunt-cli
和grunt
四處尋找“進路”。
從GruntJS的源代碼:
// Expose the task interface. I've never called this manually, and have no idea
// how it will work. But it might.
grunt.tasks = function(tasks, options, done) {
...
如您所見,Allman先生警告我們注意該界面...我的問題是,有人能使用此功能嗎?
到目前為止,我的實驗使我相信,以編程方式控制咕unt聲的最佳方法是通過模仿子進程的命令行調用:
$ npm install grunt-cli //notice no -g flag
// From runner.js
var exec =require('child_process').exec
exec('node_modules/.bin/grunt-cli tasks to run', {
cwd: 'path/to/directory/with/a/gruntfile'
}, function() { /* do stuff here */ });
這似乎很臟,所以我正在考慮只編寫自己的任務運行器,該任務運行器公開執行任務的接口。 但是,盡管有人警告了Allman先生,但如果grunt.tasks()
成功了,我就不想grunt.tasks()
工作。
顯而易見的答案似乎應該寫一個艱巨的任務來做你想做的事情:)
然后,您可以使用grunt.task.run()
控制其他grunt任務: http : //www.gruntjs.org/article/grunt_task.html
您還可以動態地更新它們的配置,然后通過使用grunt.config
使其非常容易地運行
還有一個答案可能會回答您的問題: 如何從咕gr聲任務中運行咕unt聲任務?
還請檢查未公開記錄的grunt.task.start()
,但它似乎啟動了所有任務https://github.com/gruntjs/grunt/blob/master/lib/util/task.js# L246 (帽子提示:@jibsales)
也許這可以幫助您編寫自定義處理程序: https : //www.npmjs.com/package/rungrunttask
使用細節
var RunGruntTask = require('rungrunttask').RunGruntTask;
var taskname = 'some grunt task such as backup database every 24hours';
RunGruntTask(taskname);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.