Matt
Matt

Reputation: 101

Requirejs and Grunt: mainConfigFile vs grunt task options

I find there to be a lot of confusion/lack a specific way of handling building with require in grunt. I'm just confused what configuration should go directly in Grunt task options:

grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    requirejs: {
        compile: {
            options: {
                baseUrl: './js',
                mainConfigFile: 'config.js',
                optimize: 'none',
                include: ['./main'],
                out: 'optimized.js'
            }
        }
    }
});

And then in config file:

({
    appDir: './',
    baseUrl: './js',
    dir: './dist',
    optimize: 'none',
    optimizeCss: 'standard',
    removeCombined: true,
    paths: {
        jquery: './js/jQuery/jquery',
    }
})

Obviosuly there seems to be some redundancy but that is mostly what I've found. Can someone explain why or if I'm mistaken? Can I place all config in one or the other? I'm only planning on working off of the optimized single file with almond.

Also do I only state the initial single point of entry to build the dependency chain from ie my main.js file and any require calls in there or can I state a wildcard list of files that calls modules:

include: ['./variousFiles/*.js']

Any and all clarifications of how to best utilize require with Grunt will be appreciated. Thank you!

Upvotes: 1

Views: 419

Answers (1)

Louis
Louis

Reputation: 151531

When you use RequireJS' r.js optimizer there are two configurations to speak of:

  1. The runtime configuration which is what is described in the RequireJS documentation. This is where you tell RequireJS where to find modules at runtime.

  2. The build configuration, which is what is described with r.js' documentation. This tells r.js how to build bundles from your modules.

The mainConfigFile option is for the build configuration, it tells r.js where to find the runtime configuration you plan to use when you run the bundles it will create. This is to prevent having to duplicate shim and paths options from the runtime configuration to the build configuration.

In your description, it looks like you are making mainConfigFile point to a build configuration. This is useless.

Upvotes: 2

Related Questions