您可以通过以下方式组织艰苦的任务:
- config :默认任务
- register :调用多个默认任务的别名任务
您必须遵守的一些规则 :
- 文件名必须与任务名称相同(例如:ngAnnotate.js-> task:ngAnnotate)
- 通过grunt插件将您的配置任务分组在一个文件中。 不要在配置任务中混用grunt-plugins,这里有注册任务。
配置任务的名称和注册任务是共享的,因此您无法设置
home
配置任务和home
注册任务,因为当您用grunt home调用它时,grunt无法知道您要引用的任务。├── Gruntfile.js
└── grunt
├── config
│ ├── sass.js
│ ├── concat.js
│ └── uglify.js
└── register
├── GroupOfTasks.js
└── AnotherGroupOfTasks.js
您
Gruntfile.js将使用以下代码加载和配置
grunt/config和
grunt/register文件夹中的所有任务:
module.exports = function(grunt) { // Load the include-all library in order to require all of our grunt // configurations and task registrations dynamically. var includeAll; try { includeAll = require('include-all'); } catch (e0) { console.error('Could not find `include-all` module.'); console.error('Skipping grunt tasks...'); console.error('To fix this, please run:'); console.error('npm install include-all --save-dev'); console.error(); } function loadTasks(relPath) { return includeAll({ dirname: require('path').resolve(__dirname, relPath), filter: /(.+).js$/ }) || {}; } function invokeConfigFn(tasks) { for (var taskName in tasks) { if (tasks.hasOwnProperty(taskName)) { tasks[taskName](grunt); } } } // Load task functions var taskConfigurations = loadTasks('./grunt/config'), registerDefinitions = loadTasks('./grunt/register'); // Run task functions to configure Grunt. invokeConfigFn(taskConfigurations); invokeConfigFn(registerDefinitions);};您的配置任务应如下所示(Eg:)
sass.js:
module.exports = function(grunt) { grunt.config.set('sass', { dev: { options: { sourceMap: false }, files: { 'main.css': 'main.scss' } } }); grunt.loadNpmTasks('grunt-sass');};您将能够运行config任务,
grunt sass以运行所有sass任务或
grunt sass:dev仅运行一个任务。
注册任务应如下所示(例如:
SassAndConcat要运行的任务
sass和
concat任务):
module.exports = function(grunt) { grunt.registerTask('SassAndConcat', [ 'sass:dev', 'concat:dev', ]);};现在您将能够运行
grunt SassAndConcat。
如果您了解这一点,则可以通过在正确的时间运行正确的任务来更有效地运行Grunt任务。
不要忘记安装
include-allNPM模块,以动态要求我们执行所有必需的配置和任务注册。



