dan*_*ast 5 javascript gruntjs
我这样定义我的任务:
grunt.registerTask('tmp', 'An internal task', [
'clean:tmp',
'jshint',
'ember_templates',
'neuter',
'copy:tmp',
'replace:tmp',
]);
Run Code Online (Sandbox Code Playgroud)
由于这是一个不应由用户调用的任务,我想避免使用grunt --help. 这可能吗?
我在文档中没有找到任何相关的配置参数
您可以在帮助任务的 grunt 代码中看到此代码循环遍历所有任务的数组 - 当前从第 106 行开始
exports.tasks = function() {
grunt.log.header('Available tasks');
if (exports._tasks.length === 0) {
grunt.log.writeln('(no tasks found)');
} else {
exports.table(exports._tasks.map(function(task) {
var info = task.info;
if (task.multi) { info += ' *'; }
return [task.name, info];
}));
...
Run Code Online (Sandbox Code Playgroud)
这意味着我们应该看看这个数组的填充位置 - (当前从第 94 行开始):
exports.initTasks = function() {
// Initialize task system so that the tasks can be listed.
grunt.task.init([], {help: true});
// Build object of tasks by info (where they were loaded from).
exports._tasks = [];
Object.keys(grunt.task._tasks).forEach(function(name) {
exports.initCol1(name);
var task = grunt.task._tasks[name];
exports._tasks.push(task);
});
};
Run Code Online (Sandbox Code Playgroud)
在这里您可以看到,所有已注册的任务(对象 grunt.task._tasks)都有一个循环。循环内部没有检查,所以现在必须查看该对象被填充的位置。
这是在registerTask-prototype-method 中完成的(当前为第 78 行):
// Register a new task.
Task.prototype.registerTask = function(name, info, fn) {
... some other code
// Add task into cache.
this._tasks[name] = {name: name, info: info, fn: fn};
Run Code Online (Sandbox Code Playgroud)
现在这意味着对你的问题明确回答“不”。您无法注册不会显示在 --help 上的任务。
但是grunt github 存储库上有一个问题正是针对您的问题(私人任务)提交的。请随意分叉存储库,使其工作并将其返回给社区;-)