我有一个使用Grunt的应用程序,我在终端中启动,我想通过另一个应用程序运行任务。 所以我想知道如何将我的Gruntfile.js包含到这个其他应用程序中,并运行任务。
现在这个新应用程序非常基本,使用NodeJS创建一个简单的本地网页,并带有一个启动任务的按钮。
Gruntfile(我想运行"存档"任务)
module.exports = function (grunt) {
require('time-grunt')(grunt);
require('jit-grunt')(grunt, {
ngtemplates: "grunt-angular-templates"
});
var Generator = require("./generator.js")(grunt);
var generator = new Generator();
generator.printLogo();
// Build
grunt.registerTask("build", function (fileType) {
//definition of build task
grunt.task.run(tasks);
});
// Archive Task.
grunt.registerTask("archive", ["build", "compress", "clean:post-rsync"]);
};
其他文件:(我尝试了一个要求,它似乎有效,但我无法运行Gruntfile的"存档"任务。)
var grunt = require('grunt');
var gruntfile = require('./Gruntfile.js')(grunt);
var app = express();
app.get('/', function(req, res){
res.render('test.ejs');
});
app.post('/create', function(req, res){
//run grunt task "archive" here
//gruntfile.grunt.registerTask("archive", ["build"]);
res.redirect('/');
});
app.listen(8080);
你知道我怎么能在我的gruntfile中运行这个其他文件中的任务? (函数printLogo()正在运行,因此我确定包含Gruntfile)
非常感谢(我是Grunt的初学者,很抱歉,如果我错过了一些微不足道的事情)
答案 0 :(得分:0)
您只需从节点运行命令即可。这样你就不必担心依赖关系了。除了编程之外,你就像通常那样产生咕噜声。
var spawn = require('child_process').spawn;
// This will run the 'archive' task of grunt
spawn('grunt', ['archive'], {
cwd: 'path/to/grunt/project'
});
答案 1 :(得分:0)
Grunt是一个命令行工具,这里最干净的方法是重构你的Gruntfile
并将你的任务逻辑提取到库中。
然后,您可以通过Gruntfile
任务调用该库,也可以通过/create
路径调用您的库。
答案 2 :(得分:0)
您可以使用grunt-hub插件:
grunt.initConfig({
hub: {
all: {
src: ['../*/Gruntfile.js'],
tasks: ['jshint', 'nodeunit'],
},
},
});