簡體   English   中英

以編程方式控制Grunt.js

[英]Programmatically controlling Grunt.js

我希望能夠訪問grunt生態系統中的許多可用插件和任務,以使我的生活更輕松,但是我想控制何時以及如何運行每個任務。 最重要的是,我想要一種以編程方式運行grunt任務的方法,而不是從帶有Gruntfile的文件夾中的命令行運行gruntGruntfile 因此,我開始在grunt-cligrunt四處尋找“進路”。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM