babel-plugin-ast-literal

0.5.4 • Public • Published

Babel Plugin AST Literal

Babel plugin which processes expr and stmt tagged template strings into Babylon (Babel JS parser) AST nodes:

let exportReactComponentNode = stmt`
  export function ${name}(props) {
    return React.createElement(
      ${component},
      {...props, className: styles.${className}}
    );
  }
`; // {type: 'ExportNamedDeclaration', ...}

let jsxNode = expr`<div a="${some}" />` // {type: 'JSXElement', ...}

This is mostly useful for code generation.

Why not babel-template

  • + It handles more cases, like:

      stmt`import Lib from "${lib}"`
    

    which can't be handled by babel-template (it can only fill identifiers).

  • + It inlines AST Node generation in code instead of doing a pass over AST Node template as babel-template does. This should be faster.

  • - It is somewhat hacky but it works!

  • It allows to specify template right in place rather than defining template and then applying it.

  • I wrote it when babel-template wasn't a thing (previous versions were even targeting Babel 5).

Installation & Usage

Install from npm:

% npm install babel-plugin-ast-literal

Add to you Babel config (probably .babelrc):

{
  "plugins": ["ast-literal"]
}

Enjoy!

Package Sidebar

Install

npm i babel-plugin-ast-literal

Weekly Downloads

3

Version

0.5.4

License

MIT

Last publish

Collaborators

  • andreypopp