Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/infinitered/jest-preset-ignite

Glues together TypeScript, React Native, and Jest.
https://github.com/infinitered/jest-preset-ignite

jest react-native typescript

Last synced: 3 months ago
JSON representation

Glues together TypeScript, React Native, and Jest.

Awesome Lists containing this project

README

        

# jest-preset-ignite

Converts JS into TS within a react-native project.

## Version Supported

Version 0.6 of this library supports:

| Library | Version |
| ------------ | ---------- |
| Jest | 23.6.x |
| React Native | 0.56, 0.57 |
| TypeScript | 3.x |
| Node JS | 8+ |

Version 0.5 of this library supports the following configuration:

| Library | Version |
| ------------ | ---------------- |
| Jest | 22.x |
| React Native | 0.53, 0.54, 0.55 |
| TypeScript | 2.7.x - 2.9.x |
| Node JS | 8+ |

It may work on other version, but I haven't tested this.

## Installing

In a project that contains the aforementioned libraries and versions, run this bad boy:

`yarn add jest-preset-ignite --dev`

Then open your `package.json` and change the `jest` section to use this preset.

```json
"jest": {
"preset": "jest-preset-ignite"
}
```

You will also need a `test/setup.ts` file. This will be run first when the test
environment boots up. You can use this for any custom mocks or setup.

## TypeScript Compiler Settings

This will use it's own "`tsconfig.json`" and not the one from your project.

Here's a brief explanation on the compiler settings used. This WILL be on the test!

```js
{
// We are able to target something higher because whatever we emit
// will still be run through ye olde babel.
target: "es2017",

// We are running this within node, so commonjs is our only option (for now!)
module: "commonjs",

// I believe that `react-native` is more for historical reasons. This works.
jsx: "react",

// This is not something we can escape at the moment unfortunately. Some libraries
// (such as react-native-i18n, moment, validate.js) have their typings already using
// the broken way.
allowSyntheticDefaultImports: true,

// Related to the option above, and new in TypeScript 2.7, this furthers support for the
// broken way to import default modules.
esModuleInterop: true,

// Let TypeScript's compiler know we'll be needing source maps.
sourceMap: true
}
```

## Prior Art

Thanks to https://github.com/petester42/jest-preset-typescript-react-native for showing me how this is done.

That project appears to be no longer active, so this picks up from there.

## License

MIT