2016-04-25 93 views
4

设置一个新的项目,将有多个grunt任务,我想从任务文件加载。grunt所需的配置属性丢失

当运行我的第一个任务,'核心'这应该为该网站的核心CSS,我收到一个错误,我似乎无法解决。一直在做一些谷歌搜索,没有找到这个具体问题。任何有相同错误信息的问题通常都是由于OP上的错字或错位花括号而造成的。不知道这是这种情况,但也许别人看到我显然没有看到。

Gruntfile.js

module.exports = function(grunt) { 

    grunt.initConfig({ 
     pkg: require('./package.json') 
    }); 

    grunt.loadTasks('grunt-tasks'); 

}; 

咕噜任务/咕噜-core.js

module.exports = function (grunt) { 
    grunt.loadNpmTasks('grunt-sass'); 
    grunt.config('core', { 
     sass : { 
      options : { 
       sourceMap : true, 
       includePaths : 'node_modules/bootstrap-sass/assets/stylesheets' 
      }, 
      dist : { 
       files : { 
        'main.css' : 'main.scss' 
       } 
      } 
     } 
    }); 
    grunt.registerTask('core', ['sass:dist']); 
}; 

错误:

$ grunt core 
Running "sass:dist" (sass) task 
Verifying property sass.dist exists in config...ERROR 
>> Unable to process task. 
Warning: Required config property "sass.dist" missing. Use --force to continue. 

Aborted due to warnings. 

我已经尝试了一些不同的东西。如果我改变registerTask这样:

grunt.registerTask('core', ['sass']); 

我得到这个错误:

$ grunt core 
>> No "sass" targets found. 
Warning: Task "sass" failed. Use --force to continue. 

Aborted due to warnings. 

不知道这是相关的,但这里是的package.json和系统上的某些功能,我使用。

Mac OSX Yosemite 
node version v5.10.1 
npm 3.8.3 

的package.json

{ 
    "name": "TEST", 
    "version": "1.0.0", 
    "description": "test test test", 
    "main": "Gruntfile.js", 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "repository": { 
    "type": "git", 
    "url": "https://github.com/path/to/repo" 
    }, 
    "author": "me <[email protected]>", 
    "license": "ISC", 
    "bugs": { 
    "url": "https://github.com/path/to/repo/issues" 
    }, 
    "homepage": "https://github.com/path/to/repo", 
    "devDependencies": { 
    "angular": "^1.5.5", 
    "bootstrap-sass": "^3.3.6", 
    "grunt": "^1.0.1", 
    "grunt-contrib-jshint": "^1.0.0", 
    "grunt-contrib-uglify": "^1.0.1", 
    "grunt-contrib-watch": "^1.0.0", 
    "grunt-sass": "^1.1.0", 
    "jquery": "^2.2.3", 
    "sass-lint": "^1.5.1" 
    }, 
    "dependencies": { 
    "jquery": "^2.2.3" 
    } 
} 
+0

如果我添加另一种选择配置为CONCAT,我得到同样的错误。当我将配置添加到Gruntfile.js时,一切运行良好。问题似乎与loadTasks操作。我真的很希望能够从单独的配置中加载任务,因为该项目将变得非常大。 – keith73

回答

2

看起来就像是用户的错误在我的部分。

在任务文件

,我不得不grunt.config(),但我应该有grunt.initConfig()

var taskConfig = { 
    sass : { 
     options : { 
      sourceMap : true, 
      includePaths : 'node_modules/bootstrap-sass/assets/stylesheets' 
     }, 
     dist : { 
      files : { 
       'main.css' : 'main.scss' 
      } 
     } 
    }, 
    concat : { 
     core : { 
      src : ['node_modules/jquery/dist/jquery.js', 'js/main.js'], 
      dest : "../dev/js/main.js" 
     } 
    } 
}; 

module.exports = function (grunt) { 
    grunt.loadNpmTasks('grunt-contrib-concat'); 
    grunt.loadNpmTasks('grunt-sass'); 
    grunt.initConfig(taskConfig); 
    grunt.registerTask('core', ['concat:core','sass']); 
}; 
+0

更多信息,一旦我在grunt-tasks中添加第二个任务,initConfig()将覆盖前一个任务。我正在寻找其他选项,如require('load-grunt-tasks') – keith73