Converts JS into TS within a react-native project.
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.
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.
"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.
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!
{
// 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
}
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.
MIT