What does exclamation mark mean inside Intern's define?

3k Views Asked by At

When looking at the Intern.io examples, I'm not following the path syntax.

For example:

define([
    'intern!object',
    'intern/chai!assert',

What's going on with the '!' character?

// Non-functional test suite(s) to run in each browser
suites: [ 'intern/node_modules/dojo/has!host-browser?tests/utils' ],

Can someone explain the path reference above for the suite path?

Thanks.

2

There are 2 best solutions below

0
On BEST ANSWER

Module IDs with exclamation points are AMD loader plugins. The part before the exclamation point is the module ID of the loader plugin module, and the part after the exclamation point is plugin-specific information that the plugin module uses to decide what to do.

  • intern!object loads the intern plugin module and then tells it "object" (which causes the plugin to load the object interface API)
  • intern/chai!assert loads the intern/chai plugin module (and tells it to load the assert-style API)
  • intern/dojo/has!host-browser?tests/utils (there should not be a node_modules in this mid) loads the dojo/has module from Intern’s internal copy of Dojo, and uses it to load tests/utils if the host-browser feature detection test is true (otherwise it loads nothing).
0
On

The exclamation marks are specifying particular modules to load.

The path reference allows an alternative AMD loader to be used.