SailsJs在default.js中添加自定义任务

时间:2016-07-08 21:12:08

标签: node.js sails.js grunt-contrib-cssmin

我正在尝试在salsjs应用程序中添加自定义任务。

这是我到目前为止所做的:

  • 在task / config目录中添加了一个名为cssminTemplates.js
  • 的新文件
  • 修改任务/注册目录中的default.js文件。

我的cssminTemplates.js基本上是cssmin.js标准文件的副本:

module.exports = function(grunt) {

 grunt.config.set('cssminTemplates', {
    dist: {
        src: ['asset/templates/above_the_fold.css'],
        dest: 'asset/templates/above_the_fold.min.css'
    }
 });
grunt.loadNpmTasks('grunt-contrib-cssmin');
};

default.js文件已修改如下:

module.exports = function (grunt) {
 grunt.registerTask('default', [
  'compileAssets',
  'linkAssets',
  'cssminTemplates',
  'watch']);
};

但是当我用sails lift命令启动应用程序时,我收到了这个错误:

Warning: Task "cssminTemplates" not found. 

我尝试用'cssmin'更改'cssminTemplates'并且我没有错误。

1 个答案:

答案 0 :(得分:0)

Grunt.jsref)中,调用cssminTemplates函数而不是通过grunt.loadNpmTasks('grunt-contrib-cssmin');加载的cssmin。这是调用函数的地方:

function invokeConfigFn(tasks) {
    for (var taskName in tasks) {
        if (tasks.hasOwnProperty(taskName)) {
            // Invoking the function....
            tasks[taskName](grunt);
        }
    }
}

换句话说,您正在设置功能(cssminTemplates)并从Grunt.js调用它,但Grunt已加载cssmin而不是loadNpmTasks()。我认为这就是为什么设置cssminTemplates不起作用的原因。