Grunt不执行grunt-contrib-sass任务

我已经使用grunt-contrib-sass插件将Sass任务添加到了我的grunt进程中。 这是我的gruntfile:

module.exports = function ( grunt ) { grunt.loadNpmTasks('grunt-contrib-sass'); /** * Load in our build configuration file. */ var userConfig = require( './build.config.js' ); /** * This is the configuration object Grunt uses to give each plugin its * instructions. */ var taskConfig = { /** * We read in our `package.json` file so we can access the package name and * version. It's already there, so we don't repeat ourselves here. */ pkg: grunt.file.readJSON("package.json"), sass: { dev: { files: [{ expand: true, cwd: 'css', src: ['**/*.scss'], dest: 'css', ext: '.css' }] }, prod: { files: [{ expand: false, cwd: 'css', src: ['**/*.scss'], dest: 'css', ext: '.css' }] } }, }; grunt.initConfig( grunt.util._.extend( taskConfig, userConfig ) ); grunt.registerTask('default', [ 'sass:prod' ]); grunt.registerTask('dev-build', [ 'sass']); grunt.registerTask('sass', [ 'sass:dev' ]); grunt.event.on('watch', function(action, filepath, target) { grunt.log.writeln(target + ': ' + filepath + ' has ' + action); }); }; 

我有Ruby 1.9.3和Sass Gem 3.3.2安装并从命令行和IntelliJ 13工作。但是,当我尝试运行grunt sass或应用grunt手表到我的scss文件,我得到以下跟踪输出:

 <c:\users\[proj_dir_path]>grunt sass --verbose Initializing Command-line options: --verbose Reading "gruntfile.js" Gruntfile...OK Registering Gruntfile tasks. Registering "grunt-contrib-sass" local Npm module tasks. Reading C:\Users\[proj_path]\node_modules\grunt-contrib-sass\package.json...OK Parsing C:\Users\[proj_path]\node_modules\grunt-contrib-sass\package.json...OK Loading "sass.js" tasks...OK + sass Reading package.json...OK Parsing package.json...OK Initializing config...OK Loading "gruntfile.js" tasks...OK + sass Running tasks: sass Running "sass" task [About 500 more repeats of this] Running "sass" task Warning: Maximum call stack size exceeded Use --force to continue. Aborted due to warnings. 

要运行SCSS Gem,我必须用参数执行scss.bat命令。 我最好的猜测是,Grunt Sass插件试图用参数执行Ruby EXE,而在我的系统上,我必须用蝙蝠来运行它。 这只是我的猜测通过sass.js任务代码梳理。 有没有其他人有类似的问题,是否有任何解决方法或解决这个?

我认为这是一个recursion问题,注册的任务正在循环运行。

我的工作没有

grunt.registerTask('sass',['sass:dev']);

因为它看起来在initConfig中设置的任何东西都是自动执行的任务。 如果删除该行不起作用,请尝试重命名它

grunt.registerTask('my-sass',['sass:dev']);

并运行

咕噜我的sass

尝试改变 –

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

 grunt.registerTask('sass', [ 'sass:dev' ]); 

要么

 grunt.registerTask('sass', [ 'sass:prod' ]);