gpt4 book ai didi

javascript - 如何在一个 grunt.registerTask 中调用多个 grunt.run.task?

转载 作者:行者123 更新时间:2023-11-28 08:04:05 24 4
gpt4 key购买 nike

当我在 cmd shell 中输入 grunt 时,我试图完成的任务如下:

  • 启动 mongod
  • 启动 Elasticsearch
  • 启动nodemon
  • 当 mongod 和 elasticsearch 运行时,执行 load_JSON_into_elasticSearch.js (因为我需要连接到它们)
  • 一切完成后,在系统默认浏览器中打开http://localhost:8080

目前唯一有效的是,它将启动 mongod、elasticsearch 和 nodemon。就是这样...

Gruntfile.js

module.exports = function (grunt) {

grunt.initConfig({
shell: {
mongo: {
command: 'mongod',
options: {
async: true
}
},
elasticsearch: {
command: 'elasticsearch',
options: {
async: true
}
}
},
nodemon: {
dev: {
script: 'server.js'
}
},
execute: {
target: {
src: ['load_JSON_into_elasticSearch.js']
}
},
open: {
dev: {
path: 'http://localhost:8080',
app: 'Google Chrome'
}
}
});

grunt.loadNpmTasks('grunt-shell-spawn');
grunt.loadNpmTasks('grunt-nodemon');
grunt.loadNpmTasks('grunt-execute');
grunt.loadNpmTasks('grunt-open');

grunt.registerTask('startServices', ['shell', 'nodemon']);
grunt.registerTask('indexAndBrowser', ['execute', 'open']);

grunt.registerTask('default', 'Start it...', function() {

var done = this.async();

grunt.log.writeln('\n===========================================\nStarting Mongod/ ElasticSearch/ Nodemon...\n===========================================\n');

var init = function () {
grunt.task.run('startServices');

var process = function () {
setTimeout(function () {
grunt.log.writeln('\n==================================\nStarting Index and Browser...\n==================================\n');
grunt.task.run('execute');
}, 20000);
};

process();
done();
};

init();

});

};

最佳答案

我个人建议使用 grunt-run (我编写它是为了管理类似的需求)。

https://www.npmjs.org/package/grunt-run

它有一些您可以利用的有用功能。以下是使用 grunt-run 的示例:

grunt.initConfig({
run: {
elasticsearch: {
cmd: 'elasticsearch',
options: {
wait: false,
ready: /started/
}
},
mongo: {
command: 'mongod',
options: {
wait: false,
ready: /waiting for connections on port/
}
},
load_json_into_es: {
args: [
'load_JSON_into_elasticSearch.js'
]
}
},
open: {
dev: {
path: 'http://localhost:8080',
app: 'Google Chrome'
}
},
nodemon: {
dev: {
script: 'server.js'
}
}
});

grunt.loadNpmTasks('grunt-run');
grunt.loadNpmTasks('grunt-nodemon');
grunt.loadNpmTasks('grunt-open');

grunt.registerTask('default', [
'run:mongo'
'run:elasticsearch'
'run:load_json_into_es',
'nodemon',
'open'

]);

关于javascript - 如何在一个 grunt.registerTask 中调用多个 grunt.run.task?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24995534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com