JSPM

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

patternplate transform creating markup from react components

Package Exports

  • patternplate-transform-react-to-markup

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 (patternplate-transform-react-to-markup) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

patternplate-transform-react-to-markup

patternplate transform creating markup from react components.

Installation

npm install --save patternplate-transform-react-to-markup react react-dom

Transformation

Input

  module.exports = React.createClass({
    displayName: 'MyAwesomePattern',
    render: function() {
      return React.createElement('div', {className: 'my-awesome-pattern'}, 'My awesome Pattern.');
    }
  });

Output

  <!-- default settings -->
  <div class="my-awesome-pattern">
    My awesome Pattern
  </div>

  <!-- with static rendering disabled -->
  <div class="my-awesome-pattern" react-id=".cd5akchxj4.1.0">
    My awesome Pattern
  </div>


  <!-- with automount enabled -->
  <div data-mountpoint>
    <div class="my-awesome-pattern" react-id=".cd5akchxj4.1.0">
      My awesome Pattern
    </div>
  </div>

Configuration

Install patternplate-transform-react-to-markup, patternplate-transform-react, react and react-dom in your patternplate project. patternplate-server currently ships with patternplate-transform-react working on *.jsx and *.html files by default.

Parameters

// configuration/patternplate-server/transforms.js
module.exports = {
  "react-to-markup": {
    "opts": {
      "automount": false, // ignore any js files and mount the component as live React component on the frontend, implies static: false
      "static": true // render static markup without react-ids
    }
  }
}

Component auto mounting

patternplate-transform-react-to-markup is capable of rendering output needed for automatic mounting of react components. To enable this globally for your project specify

// configuration/patternplate-server/transforms.js
module.exports = {
  "react-to-markup": {
    "opts": {
      "automount": true
    }
  }
}

To enable auto mounting on a per pattern basis specify

// patterns/my-awesome-pattern/package.json
{
  "name": "my-awesome-pattern",
  "version": "0.1.0",
  "options": {
    "react-to-markup": {
      "opts": {
        "automount": true
      }
    }
  }
}

React version interoperability

patternplate-transform-react-to-markup provides interoperability with react 0.13 and 0.14. The decision making on the used call happens according to these rules:

if React.version gte 0.14
  if require.resolve('react-dom') fails
    warn
    use React.render
  else if require.resolve('react') succeeds
    use ReactDOM.render
else
  use React.render

This means you can use react with and without react-dom - you'll see a warning with react >= 0.14, though:

[ ⚠ External Deprecation ⚠ ] React version 0.14.7 deprecated React.renderToString and moved it to react-dom/server's renderToString, but react-dom is not available via require.resolve. Consider installing react-dom.

Copyright 2016 by SinnerSchrader Deutschland GmbH and contributors. Released under the MIT license.