I have not found a good way to grunt-uglify multiple script files spread over multiple folders while keeping the folder structure including the uglified files intact. The only reason I want to do this is to be able to increase the performance of the "legacy" part of the web page I'm working on.
I have found a way around this which I don't want to do, since it will take to much time, and that is to do it like in this answer (they specify each src and dest pair seperately): how to config grunt.js to minify files separately
An example of what I want to achieve:
**src dir (no uglify applied):**
src
|- app1
|- randomFile.js
|- scripts
|- file1.js
|- file2.js
|- libs
|- file3.js
|- file4.js
|- app2
|- scripts
|- file1.js
|- file2.js
**destination dir (uglify applied, same file name):**
dist
|- app1
|- randomFile.js
|- scripts
|- file1.js
|- file2.js
|- libs
|- file3.js
|- file4.js
|- app2
|- scripts
|- file1.js
|- file2.js
Btw, want to do the same for CSS-files if possible.
Does anyone know if this is possible?
Similar to the answer by @DioNNiS, but stores minified files in the same folder:
The principle in
Rafa Heringer
's answer on the post you linked to looks promising, with a little twist:The only difference here is the double asterisk between the base path and the wildcard filename with its extension. That will go through all the sub-folders and - hopefully - output each find it finds in its rightful folder.
The output would be:
When it comes to doing the same with
CSS
(using the grunt-contrib-cssmin plugin), the approach mentioned above would still work, but you would have to combine it with the relevant plugin configurations that must be in place to output minifiedCSS
the way you want.PS: Haven't tried running it myself!
Actually you can use following approach:
The answer from Wallace is great, but if the files you are trying to minify don't exist before grunt starts (i.e. if you are depending on another task), it won't work because the map is generated before any task is run.
I came up with a solution for minifying generated files individually, using the node package uglify-js instead of grunt-contrib-uglify.
Example 1: With grunt.file.expand
Example 2: With grunt.file.recurse
This solution not working for me.
This is working example: