javascriptr.jsrequirejs-optimizer

Why does r.js combine and minify JS, then copy all the files to output dir?


I've been working with the RequireJS optimizer to create multiple optimized JS files for my project and have come across a problem that I’ve found mentioned in other posts but have not found a solution for.

When using r.js to optimized a single file, it pulls all the JS dependency into single file and drops it into the file specified by the “out” property in the build file. However, when trying to create two optimized files (i.e. multipage project using the ‘modules’ property), r.js creates two nicely optimized files but then drops ALL folders and files from the appDir into the output directory. That is, it pulls together and minifies all JS dependencies but then copies the individual files into the output directory.

I realize that r.js is not intended to be a deployment tool so is this by design or is there a way to tell r.js to not copy dependent files and directories into the output directory.


Solution

  • Yes, in your r.js build file, set the removeCombined option to true in order to preserve only the modules you specified to the output location.

    {
        ...
        //If set to true, any files that were combined into a build bundle will be
        //removed from the output folder.
        removeCombined: true,
        ...
    }
    

    See the r.js documentation's example build file.