Grunt CSS小程序调用堆栈超出

Grunt CSS minifier call stack exceeded

本文关键字:堆栈 调用 程序 CSS Grunt      更新时间:2023-09-26

首次使用grunt。能够连接和缩小一些javascript。当我尝试对CSS做同样的事情时,我得到以下错误:

λ git master* → grunt cssmin
Running "cssmin:css" (cssmin) task
>> RangeError: Maximum call stack size exceeded
Warning: CSS minification failed. Use --force to continue.
Aborted due to warnings.

为什么会发生这种情况?

package.json

{
    "name" : "Thing",
    "title" : "Concatentation + Minification",
    "version" : "1.0.0",
    "devDependencies": {
        "grunt": "0.4.5",
        "grunt-contrib-concat": "0.5.0",
        "grunt-contrib-cssmin" : "0.10.0",
        "grunt-contrib-watch" : "0.6.1",
        "grunt-contrib-uglify" : "0.5.0"
    }
}

Gruntfile.js

module.exports = function(grunt) {
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        concat: {
            css: {
                src: [
                    'static/css/*'
                ],
                dest: 'combined.css'
            },
            js : {
                src : [
                    'static/js/*'
                ],
                dest : 'combined.js'
            }
        },
        cssmin : {
            css:{
                src: 'combined.css',
                dest: 'combined.min.css'
            }
        },
        uglify : {
            js: {
                files: {
                    'combined.js' : [ 'combined.js' ]
                }
            }
        }
    });
    grunt.loadNpmTasks('grunt-contrib-concat');
    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.loadNpmTasks('grunt-contrib-cssmin');
    grunt.registerTask('default', [ 'concat:css'
                                  , 'cssmin:css'
                                  , 'concat:js'
                                  , 'uglify:js'
                                  ]);
};

我的css文件夹中有。png文件,因此会抛出调用堆栈大小超出。

尝试将cssminulgify方法修改为:

cssmin : {
    css:{
        src: '<%= concat.css.dest %>',
        dest: 'combined.min.css'
    }
},
uglify : {
    js: {
        files: {
            '<%= concat.js.dest %>' : 'combined.js'
        }
    }
}

查看cssmin任务的结构--> cssmin

module.exports = function(grunt) {
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        concat: {
            css: {
                src: [
                    'static/css/*'
                ],
                dest: 'combined.css'
            },
            js : {
                src : [
                    'static/js/*'
                ],
                dest : 'combined.js'
            }
        },
        cssmin : {
            combine: {
                 files: {
                      'combined.min.css': ['combined.css'] //<---- Looks like it was a error in the usage of grunt-contrib-cssmin
                 }
            }
        },
      uglify : {
            js: {
                files: {
                    'combined.js' : [ 'combined.min.js' ]
                }
            }
        }
    });
    grunt.loadNpmTasks('grunt-contrib-concat');
    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.loadNpmTasks('grunt-contrib-cssmin');
    grunt.registerTask('default', [ 'concat:css'
                                  , 'cssmin:css'
                                  , 'concat:js'
                                  , 'uglify:js'
                                  ]);
};