JSPM

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

Require and transpile JSX on the fly

Package Exports

  • import-jsx

Readme

import-jsx Build Status

Import and transpile JSX via loader hooks. It doesn't transpile anything besides JSX and caches transpiled sources by default.

Install

npm install import-jsx

Usage

Note: import-jsx only works with ES modules.

node --loader=import-jsx react-example.js

react-example.js

const HelloWorld = () => <h1>Hello world</h1>;

Examples

React

React is auto-detected by default and react will be auto-imported, if it's not already.

const HelloWorld = () => <h1>Hello world</h1>;

Preact

If an alternative library is used and exports createElement, like Preact, configure import-jsx to import it instead of React:

/** @jsxImportSource preact */

const HelloWorld = () => <h1>Hello world</h1>;

Any JSX pragma

For libraries not compatible with React's API, but which still support JSX, import it and configure import-jsx to use its pragma:

/** @jsxRuntime classic */
/** @jsx h */
import h from 'vhtml';

const HelloWorld = () => <h1>Hello world</h1>;

CLI

import-jsx can be used to transpile JSX inside CLI entrypoints defined in bin section of package.json and their imported files.

For example, given this package.json:

{
    "name": "my-amazing-cli",
    "bin": "cli.js"
}

Insert this hashbang at the beginning of cli.js:

#!/usr/bin/env NODE_NO_WARNINGS=1 node --loader=import-jsx

const HelloWorld = () => <h1>Hello world</h1>;

Disable cache

import-jsx caches transpiled sources by default, so that the same file is transpiled only once. If that's not a desired behavior, turn off caching by setting IMPORT_JSX_CACHE=0 or IMPORT_JSX_CACHE=false environment variable.

IMPORT_JSX_CACHE=0 node --loader=import-jsx my-code.js