Brunch how to disable RequireJS module wrapping

All we need is an easy explanation of the problem, so here it is.

Update:
For anyone interested in using Brunch with AngularJS I’ve put together a seed project angular-brunch-seed

I’m using Brunch with AngularJS. AngularJS provides a module system so the need for importing file using commonJS / AMD is redundant. Is it possible to disable this feature for files in the /app directory? Essentially I would like it to compile files unaltered like it does for the /vendor directory.

So the preferred out come would be:

  joinTo:
    'js/app.js': /^app/
    'js/vendor.js': /^vendor/

With both js/app.js and js/vender.js containing compile files from each respective folder, but neither wrapped.

Does anyone have any ideas?

UPDATE
The syntax has changed from when @jcruz answer. Here’s the way to do this now.

In the end I went with a modified version of @jcruz answer.

exports.config =
  modules:
    definition: false
    wrapper: (path, data) ->
      """
(function() {
  'use strict';
  #{data}
}).call(this);\n\n
      """
  files:
    javascripts:
      defaultExtension: 'coffee'
      joinTo:
        'js/app.js': /^app/
        'js/vendor.js': /^vendor/

By default the “raw” wrapper does not include coffeescript’s standard wrapper. By setting jsWrapper to:

wrapper: (path, data) ->
  """
(function() {
  'use strict';
  #{data}
}).call(this);
  """

files will be wrapped as expected.

How to solve :

I know you bored from this bug, So we are here to help you! Take a deep breath and look at the explanation of your problem. We have many solutions to this problem, But we recommend you to use the first method because it is tested & true method that will 100% work for you.

Method 1

This has changed to a module configuration now, as far as I can see:
https://github.com/brunch/brunch/blob/stable/docs/config.md#modules

exports.config =
  paths:
    ...
  files:
    ...
  modules:
    wrapper: false
    definition: false

Method 2

The ability to disable the module wrapping was just recently added in https://github.com/brunch/brunch/commit/ec158cffd1b66d5db2093cf766000673aa0dd3a5

I dont believe the release w/ these features is on npm yet but you could just re-install brunch from the github repo

Once you do that Brunch, set jsWrapper to ‘raw’ in your config.coffee

Something like this…

exports.config =
  jsWrapper: 'raw'
  files:
    javascripts:
      defaultExtension: 'js'
      joinTo:
        'javascripts/app.js': /^app/
        'javascripts/vendor.js': /^vendor/

‘brunch b’ and the wrapping code should disappear

Method 3

As of (almost) 2017 Jan, it is imperative to declare npm enabled to false along with module settings. It took me a while to find out, though. (Found this via a GitHub issue). Hope this helps. Cheers.

Here is a working config file:

// See http://brunch.io for documentation.
module.exports = {
    files: {
      javascripts: {
        joinTo: {
          '/js/app.js': /^app/,
          '/js/vendor.js': /^(?!app)/
        }
      },
      stylesheets: {
        joinTo: 'css/app.css'
      }
    },

    paths: {
      public: '/priv/static'
    },

    npm: {
      enabled: false
    },

    modules: {
      wrapper: false,
      definition: false
    }
}

Note: Use and implement method 1 because this method fully tested our system.
Thank you 🙂

All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply