javascriptgruntjsgrunt-contrib-uglify

Error when trying to use grunt-contrib-uglify: "src files were empty"


I have the following Gruntfile.js:

module.exports = function(grunt) {
  var config = {
    pkg: grunt.file.readJSON('package.json'),
    
    /* Some other tasks... */
    
    uglify: {
      options: {
        banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
      },
      def: {
        files: {
          'out/src.js': 'out/src.min.js'
        }
      }
    }
  };

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

  grunt.registerTask('default', [/* <other-tasks>, */ 'uglify:def']);
};

Folder structure is as follows:

project
  |
  +-out (folder)
  +-Gruntfile.js

Important: I run grunt from the project folder.

When running grunt, there is a task before uglify:def which is responsible for generating src.js into project/out.

When I run grunt I can see src.js being generated into project/out, but when Grunt runs uglisy:def I get the following error:

Running "uglify:def" (uglify) task.

Destination out/src.js not written because src files were empty.

No files created.

What am i doing wrong?

Log

When running with --verbose I get:

Running "uglify:def" (uglify) task
Verifying property uglify.def exists in config...OK
Files: [no src] -> out/src.js
Options: banner="/*! My Pack 2015-07-19 */\r\n", footer="", compress={"warnings":false}, mangle={}, beautify=false, report="
min", expression=false, maxLineLen=32000, ASCIIOnly=false, screwIE8=false, quoteStyle=0
>> Destination out/src.js not written because src files were empty.
>> No files created.

Solution

  • I've a configuration like the following, and it works fine for me.

        // uglify javascript
        uglify: {
            dev: {
                options: {
                    mangle: true
                },
                files: {
                    'js/dest.min.js': 'js/source.js'
                }
            }
        },
    

    Probably you confused the destination with the source. Try to switch them.