为什么 Grunt 在 Uglifying 时忽略 jQuery?

Why is Grunt ignoring jQuery when Uglifying?

我不明白为什么 jQuery 在 运行 我的 Grunt 任务时被忽略了。这是它的样子:

module.exports = function (grunt) {
    // Configuration
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        // Concat
        concat: {
            js: {
                src: [
                    'js/vendor/jquery.js',
                    'js/app/graph.js',
                ],
                dest: 'app/build/js/app.js'
            }
        },
        // Uglify
        uglify: {
            options: {
                preserveComments: false
            },
            my_target: {
                files: {
                    'app/build/js/app.min.js': [
                            'app/build/js/app.js'
                        ]
                }
            }
        });
};

当我检查 app.js 时,jQuery 是其中的一部分,但不在 app.min.js 中。所以我怀疑Uglify部分有问题。

我觉得你的语法不对,请试试这个:

    uglify: {
        development: {
            options: {
                preserveComments: false
            },
            files: {
                'app/build/js/app.min.js': 'app/build/js/app.js'
            }
    }

并将其命名为:grunt.registerTask('default', ['concat', 'uglify:development']);

不确定这是否有帮助,或者两者之间是否有任何区别,但您可以尝试设置您的 uglify 配置,类似于您的 concat 配置...例如:

module.exports = function (grunt) {
    // Configuration
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        // Concat
        concat: {
            js: {
                src: [
                    'js/vendor/jquery.js',
                    'js/app/graph.js',
                ],
                dest: 'app/build/js/app.js'
            }
        },
        // Uglify
        uglify: {
            options: {
                preserveComments: false
            },
            js: {
                src: ['app/build/js/app.js'],
                dest: ['app/build/js/app.min.js']
            }
        }
    });
};

此外,我认为您缺少一个额外的括号

github.com/gruntjs/grunt-contrib-clean 这不是绝对必要的,jQuery 如果仅此而已,应该包括在内。在包含的站点上进行测试,以确保它不只是隐藏在丑化代码中的某个地方。