JSPM

babel-preset-expo

8.1.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1589680
  • Score
    100M100P100Q194775F
  • License MIT

The Babel preset for Expo projects

Package Exports

  • babel-preset-expo

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (babel-preset-expo) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

babel-preset-expo

This preset extends the default React Native preset (metro-react-native-babel-preset) and adds support for decorators, tree-shaking web packages, and loading font icons with optional native dependencies if they're installed.

You can use this preset in any React Native project as a drop-in replacement for metro-react-native-babel-preset. If your project isn't using native font loading or web support then this preset will only add support for decorators with @babel/plugin-proposal-decorators - this is mostly used for supporting legacy community libraries.

If you start your web project with @expo/webpack-config or expo start:web and your project doesn't contain a babel.config.js or a .babelrc then it will default to using babel-preset-expo for loading.

If you have problems with the code in this repository, please file issues & bug reports at https://github.com/expo/expo. Thanks!

Options

lazyImports

Changes Babel's compiled import statements to be lazily evaluated when their imported bindings are used for the first time.

Note: this option has an effect only when the disableImportExportTransform option is set to false. On Android and iOS, disableImportExportTransform defaults to false, and on web it defaults to true to allow for tree shaking.

This can improve the initial load time of your app because evaluating dependencies up front is sometimes entirely un-necessary, particularly when the dependencies have no side effects.

The value of lazyImports has a few possible effects:

default: null

[
    'babel-preset-expo',
    {
        lazyImports: true
    }
],

web.disableImportExportTransform

Enabling this option will allow your project to run with older JavaScript syntax (i.e. module.exports). This option will break tree shaking and increase your bundle size, but will eliminate the following error when module.exports is used:

TypeError: Cannot assign to read only property 'exports' of object '#<Object>'

default: false

[
    'babel-preset-expo',
    {
        web: { disableImportExportTransform: true }
    }
],