Reputation: 16895
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?
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.
Upvotes: 7
Views: 6602
Reputation: 2777
My problem was that the path to my source file was incorrect. So it wasn't so much that the file is "empty" but that it can't be found.
Upvotes: 0
Reputation: 4965
It were happening due to, you are not registering above given tasks.
OK, lets start with concatenation in grunt:
concat: {
css: {
src: ['./assets/css/*.css', './assets/css/**/*.css'],
dest: './dist/css/style.css'
},
js: {
src: ['./assets/js/*.js', './assets/js/**/*.js'],
dest: './dist/js/script.js'
}
},
so, this concat
is supposed to collect all css
files from above given url / directories
and concatenate to given destination in one place and so with js
.
this will be simple concatenated style.css
and script.js
at dest
destination directory.
but it won't work, till you not register this concat
task inside below line:
grunt.registerTask('default', ['concat', 'cssmin', 'uglify']);
So, till concat
will not concatenate those files in dest
directory, how the uglify
will collect and work!
Conclusion: task won't get execute till you not mention them inside grunt.registerTask
function.
Upvotes: 0
Reputation: 1456
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.
Upvotes: 5