Question

I run a mocha command to run my tests

$ ./node_modules/.bin/mocha --compilers coffee:coffee-script -R spec

I wish to pass additional options to the coffee-script compiler (--bare to avoid the outer closure that is introduced when compiling .coffee to .js). Is there a way to do this? I tried

$ ./node_modules/.bin/mocha --compilers coffee:coffee-script --bare -R spec

but that doesn't look right. It also failed saying that --bare is not a valid option for mocha.

  error: unknown option `--bare'
Was it helpful?

Solution

The --compiler option doesn't support this, but you can write a script which activates the compiler with your options, then use mocha's --require option to activate your registration script. For example, create a file at the root of the project called babelhook.js:

// This file is required in mocha.opts
// The only purpose of this file is to ensure
// the babel transpiler is activated prior to any
// test code, and using the same babel options

require("babel-register")({
  experimental: true
});

Then add this to mocha.opts:

--require babelhook

And that's it. Mocha will require babelhook.js before any tests.

OTHER TIPS

Simply add a .babelrc file to your root. Then any instances of babel (build, runtime, testing, etc) will reference that. https://babeljs.io/docs/usage/babelrc/

You can even add specific config options per-environment.

In case anyone stumbles upon this. The 'experimental' option in babel has been deprecated. Your 'babelhook.js' should now read:

// This file is required in mocha.opts
// The only purpose of this file is to ensure
// the babel transpiler is activated prior to any
// test code, and using the same babel options

require("babel/register")({
  stage: 1
});
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top