【问题标题】:grunt-contrib-uglify output is emptygrunt-contrib-uglify 输出为空
【发布时间】:2014-06-11 00:08:15
【问题描述】:

我整天都在这里寻找答案,我确信这只是我的配置搞砸了。

短版: 我已经配置了咕噜声。 grunt-contrib-concat 工作。 grunt-contrib-uglify 说它可以工作,但输出一个空文件。

长版: 项目结构为:

/projectRoot
    ->/dev
        ->/js
            /foo.js
            /bar.js
    ->/dist
        ->/js

我想获取 foo.js 和 bar.js 并将它们输出到 /dist/js 目录中名为“app.js”的文件中。

这是我的配置:

module.exports = function(grunt) {
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),

        concat: {
            options:{
                separator: ';'
            },
            dist:{
                src:["js/foo.js", "js/barjs"],
                dest:"../prod/js/app.js"
            }
        },

        uglify:{
            dist:{
                files:{
                    "../prod/js/app.min.js":["js/foo.js", "js/bar.js"]
                }
            }
        }
    });



    /**
     * Set up tasks
     * @type {string[]}
     */
    var taskList = [
        "grunt-contrib-concat",
        "grunt-contrib-uglify"
    ];

    for(var task in taskList){
        grunt.loadNpmTasks(taskList[task]);
    }

    grunt.registerTask('default', ['concat']);
    grunt.registerTask('dist', ['concat','uglify:dist']);
};

是的,Grunt 已安装在我的 DEV 目录中。

当我跑步时

grunt dist

我得到以下控制台输出:

Running "concat:dist" (concat) task
File ../prod/js/app.js created.

Running "uglify:dist" (uglify) task
File js/app.min.js created: 319 B → 0 B

Done, without errors.
Process finished with exit code 0

最后,它确实创建了文件 /projectRoot/prod/js/app.min.js

...但它是空的。

关于我做错了什么有什么想法吗?此语法完全遵循自述文件和我能找到的任何其他文档中的内容。 concat 任务运行良好。

任何帮助将不胜感激。 谢谢!

--编辑-- 我更新了 Grunt,使其位于 projectRoot 中,但输出没有差异。

==============

更新

我找到了它输出空文件的原因。显然,自调用匿名函数被“缩小”了,或者至少在这种情况下它们是。这可能是因为这里没有活动代码。我将进一步研究这一点。我假设实际执行某些操作、引用全局变量等的函数将保留。

==============

最终更新

问题已解决。即使有缩小所有代码的选项,它仍然会删除任何未引用的变量等。我的测试文件中的东西没有使用。如果我添加对上述函数的引用,它们就会显示出来。

希望这对某人有所帮助。

【问题讨论】:

  • 您的配置和控制台输出似乎都说 uglify 会将新文件放在与源相同的目录中(在 /dev/js 中)。但是,您说该文件是在 /prod/js 树中创建的。这里有错别字吗?
  • 啊,是的,在我发帖之前我搞砸了,我一定改变了最终的输出目录。现已更新。
  • 在您的uglify 设置中,您提供的路径是“jas/foo.js”还是“dev/jas/foo.js”?
  • 解决了,查看评论。这是一个参考问题。 Grunt 删除了我所有的代码,因为它实际上并没有被使用。

标签: gruntjs grunt-contrib-uglify


【解决方案1】:

问题已解决。即使有缩小所有代码的选项,它仍然会删除任何未引用的变量等。我的测试文件中的东西没有使用。如果我添加对所述功能的引用,那么它们就会出现。由于没有引用任何函数,因此将它们删除,最终得到一个空文件。

希望这对某人有所帮助。

【讨论】:

    猜你喜欢
    • 2015-10-08
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多