istanbul-react

Instrumenter for 1:1 mapping of React JSX components

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
istanbul-react
1201.1.08 years ago9 years agoMinified + gzip package size for istanbul-react in KB

Readme

istanbul-react Build Status Dependency Status
Instrumenter for 1:1 mapping of React JSX components, can be used with karma-coverage

Install

$ npm install --save-dev istanbul-react

Usage

Use with karma-coverage
coverageReporter: {
  instrumenters: { 'istanbul-react' : require('istanbul-react') }
  instrumenter: {
    '**/*.jsx': 'istanbul-react'
  },
  // ...
}

You can also just use it directly
var instrumenter = new require('istanbul-react').Instrumenter({});

instrumenter.instrument(content, path, function(err, instrumentedCode) {
  // ...
});

Options

You can use modifyCodeBeforeInstrumentation to modify code before instrumentation. It might be useful for example to get around chrome bug with 'use strict';. It takes one argument, which give you an object, with two properties code - original code, filename - name of the file. This callback must return modified code as a string. In the example below you can see how 'use strict'; is prefixed with semi-colon to work around bug (or feature?) in chrome.
coverageReporter: {
  instrumenters: { 'istanbul-react' : require('istanbul-react') }
  instrumenter: {
    '**/*.jsx': 'istanbul-react'
  },
  instrumenterOptions: {
    'istanbul-react': {
      modifyCodeBeforeInstrumentation: function fixChromeBugWithUseStrict(params) {
        return params.code.replace(/(['"]use strict['"];)/g, ';$1');
      }
    }
  },
  // ...
}

Tests

$ npm test

License

MIT © Podio