Grunt uglify任务变为空白/空闲

时间:2017-01-02 10:04:40

标签: javascript angularjs gruntjs grunt-contrib-uglify

我对JS中的任务运行者来说很新,这是我第一次尝试使用GruntJS。在我的Gruntfile.js中,我保留了几个任务,如jshintcssmin等。我可以从命令行运行它们,但是当我运行`grunt uglify'没有响应,光标转到另一条线并保持数小时。也没有显示错误消息。

以下是我的相关代码,我尝试了各种uglify配置,因为我看到不同的用户提供了一组不同的属性

//uglify:{
        //    options: {
        //        mangle : {
        //            except : ['jQuery', 'angular']
        //        },
        //        compress: {
        //            drop_console : true
        //        },
        //        banner: '*****Minified file for Pricing Plan*****',
        //        footer: '*********File ends**********',
        //        preserveComments: false
        //    },
        //    my_target:{
        //        options: {
        //            beautify: true,
        //            files: {
        //                'scripts/pp.min.js': ['scripts/pp.js']
        //            }
        //        }
        //    }
        //},
        uglify: {
            options: {
                banner: '*****Minified file for Pricing Plan*****'
            },
            dist: {
                src: 'scripts/pp.js',
                dest: 'scripts/pp.min.js'
            }
        },


grunt.loadNpmTasks('grunt-contrib-uglify');

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

在命令行上,我正在运行grunt uglify

有人可以在这里说明什么是错误的,以及纠正它的方法。

如果需要:它是一个Angular1.x.x项目

编辑:我尝试安装uglifyJs并运行uglifyjs命令。它成功地使我的代码变得丑化和缩小。除了上面的内容之外,还有什么需要做的。

1 个答案:

答案 0 :(得分:0)

  

但是当我运行`grunt uglify'没有响应,光标转到另一条线并保持数小时。

问题:

我认为问题与您注册uglify任务的方式有关。以下代码行:

grunt.registerTask('uglify', ['uglify']); //<-- Issue is here.

如何修复它:

使用grunt.registerTask()创建Alias Task时,请避免将taskName命名为与taskList数组中定义的任何项目/任务相同。

grunt.registerTask('minify', ['uglify']); //<-- Correct.

注意: 虽然在上面的示例代码中我已将taskName更改为minify,但它可以是您喜欢的任何有效名称。只需确保您选择的taskName不存在taskList数组中的某个项目。

您现在通过CLI运行修订的注册uglify任务,如下所示:

$ grunt minify

Gruntfile.js

以下是修订后的Gruntfile.js

module.exports = function(grunt) {

    grunt.initConfig({
        uglify: {
            options: {
                banner: '/*****Minified file for Pricing Plan*****/'

                // ... <-- Your other options
            },
            dist: {
                src: 'scripts/pp.js',
                dest: 'scripts/pp.min.js'
            }
        }
    });

    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.registerTask('minify', ['uglify']);
};

注意 :还在横幅字符串中添加了正斜杠,以在结果文件中生成有效的JavaScript注释)