So i got this config file:
exports.files = {
javascripts: {
joinTo: {
'vendor.js': /^(?!app)/, // Files that are not in `app` dir.
'app.js': /^app/
}
},
stylesheets: {joinTo: 'app.css'}
};
exports.plugins = {
babel: {presets: ['latest']}
};
exports.npm = {
styles: {
bootstrap: ['dist/css/bootstrap.css']
}
}
When the above code is triggered the 5 files are built and compiled into 3, as expected.
Then for the sake of better understanding, I change the first export in my config file to this:
module.exports = {
files: {
javascripts: {
joinTo: {
'vendor.js': /^(?!app)/,
'app.js': /^app/
}
},
stylesheets: {joinTo: 'app.css'}
}
}
exports.plugins = {
babel: {presets: ['latest']}
};
exports.npm = {
styles: {
bootstrap: ['dist/css/bootstrap.css']
}
}
And now the bootstrap code doesn't get compiled into the final stylesheets. Why am I experiencing this behaviour?
This question is not directly related to Brunch but more how node handles exports. Check out this explanation taken from the node docs:
The exports variable is available within a module's file-level scope, and is assigned the value of module.exports before the module is evaluated.
It allows a shortcut so that
module.exports.f = ...
can be written more succinctly asexports.f = ...
However, be aware that like any variable, if a new value is assigned toexports
, it is no longer bound tomodule.exports
:
module.exports.hello = true; // Exported from require of module
exports = { hello: false }; // Not exported, only available in the module