在Sails.js中使用load-grunt-config

上下文

我已经写了一些咕噜的任务,我想用一个我在Sails.js中编写的新项目来使用它们。

使用Sails.js,你可以添加一个JS文件到/tasks/register文件夹来增加额外的grunt任务。 在我们添加文件之前,让我们来讨论一下这个问题。

问题

帆不会抬起。 debugging器显示:

 debug: -------------------------------------------------------- error: ** Grunt :: An error occurred. ** error: ------------------------------------------------------------------------ ERROR >> Unable to process task. Warning: Required config property "clean.dev" missing. 

有问题的问题显然是咕噜,所以然后我尝试grunt build (自动运行与sails lift ):

 Running "clean:dev" (clean) task Verifying property clean.dev exists in config...ERROR >> Unable to process task. Warning: Required config property "clean.dev" missing. Use --force to continue. 

由此,我已经认识到这是一个path问题。 我们来看看我添加的文件。

/tasks/register/customTask.js

这里的任务加载load-grunt-config ,这是我的问题的来源:

 module.exports = function(grunt) { // measures the time each task takes require('time-grunt')(grunt); // This require statement below causes my issue require('load-grunt-config')(grunt, { config: '../../package.json', scope: 'devDependencies', overridePath: require('path').join(process.cwd(), '/asset-library/grunt') }); grunt.registerTask('customTask', [ 'newer:jshint', 'newer:qunit', 'newer:concat', 'newer:cssmin', 'newer:uglify' ]); }; 

我假设使用overridePath而不是configPath将解决我的问题,但是,唉,这不是那么简单。 有什么办法让我可以使用我自己的自定义任务文件夹的load-grunt-config像我在其他项目中做的,或者有一些神奇的条件,我可以包装require语句?

我只需要它运行与grunt customTask ,而不是运行与grunt * (别的)。

好吧,这其实很简单。 我所要做的就是改变我的customTask.js文件中的grunt.registerTask调用:

 grunt.registerTask('customTask', [ 'newer:jshint', 'newer:qunit', 'newer:concat', 'newer:cssmin', 'newer:uglify' ]); 

对此:

 grunt.registerTask('customTask', 'My custom tasks', function() { // The require statement is only run with "grunt customTask" now! require('load-grunt-config')(grunt, { config: '../../package.json', scope: 'devDependencies', overridePath: require('path').join(process.cwd(), '/asset-library/grunt') }); grunt.task.run([ 'newer:jshint', 'newer:qunit', 'newer:concat', 'newer:cssmin', 'newer:uglify' ]); }); 

如果不清楚,我不得不移动require('load-grunt-config')调用,所以如果你复制粘贴,确保删除grunt.registerTask调用之外的require语句。

你可以在这里find更多关于定制Grunt任务的信息 。