Javascript 以编程方式控制Grunt.js

Javascript 以编程方式控制Grunt.js,javascript,node.js,gruntjs,Javascript,Node.js,Gruntjs,我希望能够访问grunt生态系统中的许多可用插件和任务,使我的生活更轻松,但我希望能够控制每个任务的运行时间和方式。最重要的是,我想要一种以编程方式运行grunt任务的方法,而不是从带有GrunFile的文件夹中的命令行运行grunt。所以我开始在grunt cli和grunt中寻找一条“进来的路” 从的源代码: 正如你所见,奥尔曼先生提醒我们注意界面。。。我的问题是,有没有人让这个工作 到目前为止,我的实验让我相信,以编程方式控制grunt的最佳方法是用子进程模拟命令行调用: $ npm in

我希望能够访问grunt生态系统中的许多可用插件和任务,使我的生活更轻松,但我希望能够控制每个任务的运行时间和方式。最重要的是,我想要一种以编程方式运行grunt任务的方法,而不是从带有
GrunFile
的文件夹中的命令行运行
grunt
。所以我开始在
grunt cli
grunt
中寻找一条“进来的路”

从的源代码:

正如你所见,奥尔曼先生提醒我们注意界面。。。我的问题是,有没有人让这个工作

到目前为止,我的实验让我相信,以编程方式控制grunt的最佳方法是用子进程模拟命令行调用:

$ 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 */ });

这看起来有点脏,所以我想简单地编写自己的任务运行程序,为grunt任务公开一个接口。然而,如果有人在
grunt.tasks()
方面取得了成功,我不想重复工作,尽管奥尔曼先生提出了警告。

显而易见的答案似乎是应该写一个grunt任务来完成你想做的事情:)

然后您可以使用
grunt.task.run()
控制其他grunt任务:

您还可以在运行它们之前动态地更新它们的配置,方法是使用
grunt.config

还有一个答案可以回答你的问题:


还可以查看
grunt.task.start()
,它没有公开的文档记录,但它似乎启动了所有的任务(帽子提示:@jibsales)

显而易见的答案似乎是应该编写一个grunt任务来做任何你想做的事情:)

然后您可以使用
grunt.task.run()
控制其他grunt任务:

您还可以在运行它们之前动态地更新它们的配置,方法是使用
grunt.config

还有一个答案可以回答你的问题:


另外,还可以查看
grunt.task.start()
,它没有公开的文档记录,但似乎可以启动所有任务(帽子提示:@jibsales)

也许这可以帮助您编写自定义处理程序:

使用详情

var RunGruntTask = require('rungrunttask').RunGruntTask;
var taskname = 'some grunt task such as backup database every 24hours';
RunGruntTask(taskname);

也许这有助于您编写自定义处理程序:

使用详情

var RunGruntTask = require('rungrunttask').RunGruntTask;
var taskname = 'some grunt task such as backup database every 24hours';
RunGruntTask(taskname);

如果你给出一个你想做什么的例子,这可能更容易回答。谢谢你。。。我会添加一些伪代码。如果你给出一个你想做的例子,这可能会更容易回答。谢谢你。。。我将添加一些伪代码虽然这有助于从grunt任务中运行grunt任务,但我试图避免从命令行运行
grunt
,以启动一切。我正在更新我的问题,以便更清楚。你具体想避免什么?是否在全球范围内安装grunt?grunt只是一个节点程序。。。再想一想,你答案中的链接可能已经激活了正确的突触。你甚至可以只做
var grunt=require('grunt');grunt.task.run()…
如果您添加了调用
grunt.task.start()
的需求,我会将您的答案标记为正确的。虽然这有助于从grunt任务中运行grunt任务,但我试图避免从命令行运行
grunt
来启动所有操作。我正在更新我的问题,以便更清楚。你具体想避免什么?是否在全球范围内安装grunt?grunt只是一个节点程序。。。再想一想,你答案中的链接可能已经激活了正确的突触。你甚至可以只做
var grunt=require('grunt');grunt.task.run()…
如果您添加了调用
grunt.task.start()的需要,我会将您的答案标记为正确。