{"bugs":{"url":"https://github.com/gaearon/react-hot-loader/issues"},"dist":{"shasum":"bb025bc01d77b246766f3f3d19d824c8052fba87","tarball":"https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-4.4.0.tgz","fileCount":16,"integrity":"sha512-cxLqseogDVrrpFYjS00AchfILK1zab0SXQwRAUHM/mNjcN4gS4Agjc97BfIzrgIVuJCIkQCpSGWQh4kVnz5VGQ==","signatures":[{"sig":"MEQCIBkNSsOiLY6+M+/99q8J47Uk9FrFgq/9I1RlZP7ZINTlAiBxirRfUBXRfI1FMWnBiP39lot6r6sSVpWc5GtD+1w/Vw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133649,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb5rfYCRA9TVsSAnZWagAA+NcP/2F1I9uSmHIJdxANzHhJ\nmbY8y3UCdmsmLz/BjXBuO6WRMVdhMEsOS5/FepZmjtxm4tSYKqXI0k64oVDP\nLdoazDUbTWBIiqLF9BlM0vOSjT+6wfvqd1ONWhWN19aRVYVpKp8GBp9Is+7J\nkinLM7juxEuRf3d6foov6P7/aUf1itP4MMlLA7j+NHz09QoTPkobiQsh73mP\nplX1p+7TaO2je/gmaYLviWz7SM3RRdU1K+tgU3cvvgIMGKnQLZMJH2685hEQ\nTLe/46aPMrDEf+cbDF499DEyDjGEX+pyIVgAL4U+vr7SHWWQpPNV1JyHy4AQ\nSP7bx6iQnPxH3XktGhZWTDErZi2KyDQfYf/UsKzRsB07HBIpBxuL/hxWeDcq\nNRUHOp/K5U9q6Jw/P+OP/M/uxwfwPJ+EcYIQYFxbo7+egrzsNr4fwzZnChNX\nOJ6jK84yIQhIftlfegU62+bbbejpsnQ4D4e8gdMgfwI+R3EB6yeQRVDZhgyj\nHGkCpFSAr1232P6vTbDYII0letmx+urDdIO0ko74n1ETelkbDii8Nch80gbv\niT9gxmlUD1AYGZy2Ft1dv02PnTo3I6EB/09084njYESzmylJTQVFM21AigcJ\nVg1t6CnoSn6yaS79W920v+Y5Qudo1WqHqOnAQ/dDfa1NW2owLRfzm3foqd+i\n4Oic\r\n=3LG0\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"transform":{"^.+\\.js$":"<rootDir>/testConfig/babel.js"},"setupFiles":["<rootDir>/testConfig/setupTests.js"],"moduleDirectories":["node_modules","<rootDir>"]},"main":"index.js","name":"react-hot-loader","types":"react-hot-loader.d.ts","author":{"name":"Dan Abramov"},"readme":"# React Hot Loader\n\n[![Build Status][build-badge]][build] [![version][version-badge]][package]\n[![Code Coverage][coverage-badge]][coverage]\n[![MIT License][license-badge]][license]\n\n[![PRs Welcome][prs-badge]][prs] [![Chat][chat-badge]][chat]\n[![Backers on Open Collective][oc-backer-badge]](#backers)\n[![Sponsors on Open Collective][oc-sponsor-badge]](#sponsors)\n\n[![Watch on GitHub][github-watch-badge]][github-watch]\n[![Star on GitHub][github-star-badge]][github-star]\n\nTweak React components in real time ⚛️⚡️\n\nWatch\n**[Dan Abramov's talk on Hot Reloading with Time Travel](https://www.youtube.com/watch?v=xsSnOQynTHs).**\n\n## Install\n\n```\nnpm install react-hot-loader\n```\n\n> Note: You can safely install react-hot-loader as a regular dependency instead\n> of a dev dependency as it automatically ensures it is not executed in\n> production and the footprint is minimal.\n\n## Getting started\n\n1.  Add `react-hot-loader/babel` to your `.babelrc`:\n\n```js\n// .babelrc\n{\n  \"plugins\": [\"react-hot-loader/babel\"]\n}\n```\n\n2.  Mark your root component as _hot-exported_:\n\n```js\n// App.js\nimport React from 'react'\nimport { hot } from 'react-hot-loader'\n\nconst App = () => <div>Hello World!</div>\n\nexport default hot(module)(App)\n```\n\n3.  [Run webpack with Hot Module Replacement](https://webpack.js.org/guides/hot-module-replacement/#enabling-hmr):\n\n```sh\nwebpack-dev-server --hot\n```\n\n## Recipes\n\n### Migrating from [create-react-app](https://github.com/facebookincubator/create-react-app)\n\n1.  Run `npm run eject`\n2.  Install React Hot Loader (`npm install --save-dev react-hot-loader`)\n3.  In `config/webpack.config.dev.js`, add `'react-hot-loader/babel'` to Babel\n    loader configuration. The loader should now look like:\n\n```js\n  {\n    test: /\\.(js|jsx)$/,\n    include: paths.appSrc,\n    loader: require.resolve('babel-loader'),\n    options: {\n      // This is a feature of `babel-loader` for webpack (not Babel itself).\n      // It enables caching results in ./node_modules/.cache/babel-loader/\n      // directory for faster rebuilds.\n      cacheDirectory: true,\n      plugins: ['react-hot-loader/babel'],\n    },\n  }\n```\n\n4.  Mark your App (`src/App.js`) as _hot-exported_:\n\n```js\n// ./containers/App.js\nimport React from 'react'\nimport { hot } from 'react-hot-loader'\n\nconst App = () => <div>Hello World!</div>\n\nexport default hot(module)(App)\n```\n\n### Migrating from [create-react-app](https://github.com/facebookincubator/create-react-app) without ejecting\n\nUsers [report](https://github.com/gaearon/react-hot-loader/pull/729#issuecomment-354097936), that it is possible to use [react-app-rewire-hot-loader](https://github.com/cdharris/react-app-rewire-hot-loader) to setup React-hot-loader without ejecting.\n\n### TypeScript\n\nAs of version 4, React Hot Loader requires you to pass your code through [Babel](http://babeljs.io/) to transform it so that it can be hot-reloaded. This can be a pain point for TypeScript users, who usually do not need to integrate Babel as part of their build process.\n\nFortunately, it's simpler than it may seem! Babel will happily parse TypeScript syntax and can act as an alternative to the TypeScript compiler, so you can safely replace `ts-loader` or `awesome-typescript-loader` in your Webpack configuration with `babel-loader`. Babel won't typecheck your code, but you can use [`fork-ts-checker-webpack-plugin`](https://github.com/Realytics/fork-ts-checker-webpack-plugin) (and/or invoke `tsc --noEmit`) as part of your build process instead.\n\nA sample configuration:\n\n```js\n{\n  // ...you'll probably need to configure the usual Webpack fields like \"mode\" and \"entry\", too.\n  resolve: { extensions: [\".ts\", \".tsx\", \".js\", \".jsx\"] },\n  module: {\n    rules: [\n      {\n        test: /\\.(j|t)sx?$/,\n        exclude: /node_modules/,\n        use: {\n          loader: \"babel-loader\",\n          options: {\n            cacheDirectory: true,\n            babelrc: false,\n            presets: [\n              [\n                \"@babel/preset-env\",\n                { targets: { browsers: \"last 2 versions\" } } // or whatever your project requires\n              ],\n              \"@babel/preset-typescript\",\n              \"@babel/preset-react\"\n            ],\n            plugins: [\n              // plugin-proposal-decorators is only needed if you're using experimental decorators in TypeScript\n              [\"@babel/plugin-proposal-decorators\", { legacy: true }],\n              [\"@babel/plugin-proposal-class-properties\", { loose: true }],\n              \"react-hot-loader/babel\"\n            ]\n          }\n        }\n      }\n    ]\n  },\n  plugins: [\n    new ForkTsCheckerWebpackPlugin()\n  ]\n};\n```\n\nFor a full example configuration of TypeScript with React Hot Loader and newest beta version of Babel, check [here](https://github.com/gaearon/react-hot-loader/tree/master/examples/typescript).\n\nAs an alternative to this approach, it's possible to chain Webpack loaders so that your code passes through Babel and then TypeScript (or TypeScript and then Babel), but this approach is not recommended as it is more complex and may be significantly less performant. Read more [discussion here](https://github.com/gaearon/react-hot-loader/issues/884).\n\n### Parcel\n\nParcel supports Hot Module Reloading out of the box, just follow step 1 and 2 of [Getting Started](https://github.com/gaearon/react-hot-loader/tree/master#getting-started).\n\nWe also have a [full example running Parcel + React Hot Loader](https://github.com/gaearon/react-hot-loader/tree/master/examples/parcel).\n\n### Electron\n\nYou need something to mark your modules as hot in order to use React Hot Loader.\n\nOne way of doing this with Electron is to simply use webpack like any web-based project might do and the general guide above describes. See also [this example Electron app](https://github.com/s-h-a-d-o-w/rhl-electron-quick-start).\n\nA webpack-less way of doing it to use `electron-compile` (which is also used by [`electron-forge`](https://electronforge.io)) - see [this example](https://github.com/rllola/hmr-example-issue-2). While it requires less configuration, something to keep in mind is that `electron-compile`'s HMR will always reload all modules, regardless of what was actually edited.\n\n### Source Maps\n\nIf you use `devtool: 'source-map'` (or its equivalent), source maps will be\nemitted to hide hot reloading code.\n\nSource maps slow down your project. Use `devtool: 'eval'` for best build\nperformance.\n\nHot reloading code is just one line in the beginning and one line at the end of\neach module so you might not need source maps at all.\n\n## Preact\n\nReact-hot-loader should work out of the box with `preact-compat`, but, in case of pure preact, you will need\nto configure it:\n\n* create configuration file (setupHotLoader.js)\n\n```js\nimport reactHotLoader from 'react-hot-loader'\nimport preact from 'preact'\n\nreactHotLoader.preact(preact)\n```\n\n* dont forget to import it\n\n#### Preact limitations\n\n* HOCs and Decorators as not supported yet. For Preact React-Hot-Loader v4 behave as v3.\n\n## React Native\n\nReact Native\n**[supports hot reloading natively](https://facebook.github.io/react-native/blog/2016/03/24/introducing-hot-reloading.html)**\nas of version 0.22.\n\nUsing React Hot Loader with React Native can cause unexpected issues (see #824) and is not recommended.\n\n## Webpack plugin\n\nWe recommend to use `babel` plugin, but there are situations when you are unable to use it.\nThen - try webpack loader (as seen in v3), but remeber - it is **not compatible** with class-based components, but\nhelp with TypeScript or spreading \"cold API\" [to all node_modules](https://github.com/gaearon/react-hot-loader#disabling-a-type-change-for-all-node_modules).\n\n> It is safe to enable this loader for all the files. But place it after babel-loader, if babel-loader is present.\n\n```js\n// webpack.config.js\nmodule.exports = {\n  module: {\n    rules: [\n      {\n        test: /\\.jsx?$/,\n        include: /node_modules/,\n        use: ['react-hot-loader/webpack'],\n      },\n    ],\n  },\n}\n```\n\n### Code Splitting\n\nIf you want to use Code Splitting + React Hot Loader, the simplest solution is to pick one of our compatible library:\n\n* [Loadable Components](https://github.com/smooth-code/loadable-components/)\n* [Imported Component](https://github.com/theKashey/react-imported-component)\n* [React Universal Component](https://github.com/faceyspacey/react-universal-component)\n* [React-Loadable](https://github.com/jamiebuilds/react-loadable)\n\nIf you use a non-yet-friendly library, like [react-async-component](github.com/ctrlplusb/react-async-component) you have to mark all your \"loaded components\" as _hot-exported_:\n\n```js\n// AsyncHello.js\nimport { asyncComponent } from 'react-async-component'\n\n// asyncComponent could not `hot-reload` itself.\nconst AsyncHello = asyncComponent({\n  resolve: () => import('./Hello'),\n})\n\nexport default AsyncHello\n```\n\n```js\n// Hello.js\nimport { hot } from 'react-hot-loader'\n\nconst Hello = () => 'Hello'\n\nexport default hot(module)(Hello) // <-- module will reload itself\n```\n\n### Checking Element `type`s\n\nBecause React Hot Loader creates proxied versions of your components, comparing\nreference types of elements won't work:\n\n```js\nconst element = <Component />\nconsole.log(element.type === Component) // false\n```\n\nReact Hot Loader exposes a function `areComponentsEqual` to make it possible:\n\n```js\nimport { areComponentsEqual } from 'react-hot-loader'\nconst element = <Component />\nareComponentsEqual(element.type, Component) // true\n```\n\nAnother way - compare \"rendered\" element type\n\n```js\nconst element = <Component />\nconsole.log(element.type === <Component />.type) // true\n\n// better - precache rendered type\nconst element = <Component />\nconst ComponentType = <Component />.type\nconsole.log(element.type === ComponentType) // true\n```\n\nBut you might have to provide all required props. See [original issue](https://github.com/gaearon/react-hot-loader/issues/304).\nThis is most reliable way to compare components, but it will not work with required props.\n\nAnother way - compare Component name.\n\n> Not all components has a name. **In production displayName could not exists.**\n\n```js\nconst element = <Component />\nconsole.log(element.displayName === 'Component') // true\n```\n\nThis is something we did not solve yet. Cold API could help keep original types.\n\n### Webpack ExtractTextPlugin\n\nwebpack ExtractTextPlugin is not compatible with React Hot Loader. Please disable it in development:\n\n```js\nnew ExtractTextPlugin({\n  filename: 'styles/[name].[contenthash].css',\n  disable: NODE_ENV !== 'production',\n})\n```\n\n#### Disabling a type change (❄️)\n\nIt is possible to disable React-Hot-Loader for a specific component, especially to\nenable common way to type comparison.\nSee #991 for the idea behind ⛄️, and #304 about \"type comparison\" problem.\n\n```js\nimport { cold } from 'react-hot-loader';\n\ncold(SomeComponent) // this component will ignored by React-Hot-Loader\n<SomeComponent />.type === SomeComponent // true\n```\n\nIf you will update `cold` component React-Hot-Loader will complain (on error level), and then\nReact will cold-replace Component with a internal state lose.\n\n> Reach-Hot-Loader: cold element got updated\n\n##### Disabling a type change for all node_modules\n\nYou may _cold_ all components from node_modules. This will not work for HOC(like Redux) or dynamically created Components, but might help in most of situations, when type changes\nare not welcomed, and modules are not expected to change.\n\n```js\nimport { setConfig, cold } from 'react-hot-loader'\nsetConfig({\n  onComponentRegister: (type, name, file) =>\n    file.indexOf('node_modules') > 0 && cold(type),\n\n  // some components are not visible as top level variables,\n  // thus its not known where they were created\n  onComponentCreate: (type, name) => file.indexOf('styled') > 0 && cold(type),\n})\n```\n\n! To be able to \"cold\" components from 'node_modules' you have to apply babel to node_modules, while this\nfolder is usually excluded.\nYou may add one more babel-loader, with only one React-Hot-Loader plugin inside to solve this.\n**Consider using webpack-loader** for this.\n\n##### React-Hooks\n\nReact-hot-loader does not support React 16.7 Hooks at all.\nYou have to\n\n* _cold_ components using hooks.\n\n```js\nimport { setConfig, cold } from 'react-hot-loader'\nsetConfig({\n  onComponentCreate: (type, name) =>\n    (String(type).indexOf('useState') > 0 ||\n      String(type).indexOf('useEffect') > 0) &&\n    cold(type),\n})\n```\n\n* _set a special flag_\n\n```js\nimport { setConfig, cold } from 'react-hot-loader'\nsetConfig({\n  onComponentCreate: (type, name) =>\n    (String(type).indexOf('useState') > 0 ||\n      String(type).indexOf('useEffect') > 0) &&\n    cold(type),\n})\n```\n\nPS: `react-emotion` would break due this operation.\n\n## API\n\n### `hot(module, options)`\n\nMark a component as hot.\n\n```js\nimport { hot } from 'react-hot-loader'\n\nconst App = () => 'Hello World!'\n\nexport default hot(module)(App)\n```\n\n### `AppContainer`\n\nMark application as hot reloadable. Prefer using `hot` helper.\n\n```js\nimport React from 'react'\nimport ReactDOM from 'react-dom'\nimport { AppContainer } from 'react-hot-loader'\nimport App from './containers/App'\n\nconst render = Component => {\n  ReactDOM.render(\n    <AppContainer>\n      <Component />\n    </AppContainer>,\n    document.getElementById('root'),\n  )\n}\n\nrender(App)\n\n// webpack Hot Module Replacement API\nif (module.hot) {\n  module.hot.accept('./containers/App', () => {\n    // if you are using harmony modules ({modules:false})\n    render(App)\n    // in all other cases - re-require App manually\n    render(require('./containers/App'))\n  })\n}\n```\n\n### areComponentsEqual(Component1, Component2)\n\nTest if two components have the same type.\n\n```js\nimport { areComponentsEqual } from 'react-hot-loader'\nimport Component1 from './Component1'\nimport Component2 from './Component2'\n\nareComponentsEqual(Component1, Component2) // true or false\n```\n\n### setConfig(config)\n\nSet a new configuration for React Hot Loader.\n\nAvailable options are:\n\n* `logLevel`: specify log level, default to `\"error\"`, available values are: `['debug', 'log', 'warn', 'error']`\n* `pureSFC`: enable Stateless Functional Component. If disabled they will be converted to React Components.\n  Default value: false.\n\n```js\nimport { setConfig } from 'react-hot-loader'\n\nsetConfig({ logLevel: 'debug' })\n```\n\n## Migrating from v3\n\n### AppContainer vs hot\n\nPrior v4 the right way to setup React Hot Loader was to wrap your Application\nwith `AppContainer`, set setup module acceptance by yourself. This approach is\nstill valid but only for advanced use cases, prefer using `hot` helper.\n\n**React Hot Loader v3:**\n\n```js\n// App.js\nimport React from 'react'\n\nconst App = () => <div>Hello world!</div>\n\nexport default App\n```\n\n```js\n// main.js\nimport React from 'react'\nimport ReactDOM from 'react-dom'\nimport { AppContainer } from 'react-hot-loader'\nimport App from './containers/App'\n\nconst render = Component => {\n  ReactDOM.render(\n    <AppContainer>\n      <Component />\n    </AppContainer>,\n    document.getElementById('root'),\n  )\n}\n\nrender(App)\n\n// webpack Hot Module Replacement API\nif (module.hot) {\n  module.hot.accept('./containers/App', () => {\n    // if you are using harmony modules ({modules:false})\n    render(App)\n    // in all other cases - re-require App manually\n    render(require('./containers/App'))\n  })\n}\n```\n\n**React Hot Loader v4:**\n\n```js\n// App.js\nimport React from 'react'\nimport { hot } from 'react-hot-loader'\n\nconst App = () => <div>Hello world!</div>\n\nexport default hot(module)(App)\n```\n\n```js\n// main.js\nimport React from 'react'\nimport ReactDOM from 'react-dom'\nimport App from './containers/App'\n\nReactDOM.render(<App />, document.getElementById('root'))\n```\n\n### No patch required\n\nCode is automatically patched, you can safely remove `react-hot-loader/patch`\nfrom your webpack config.\n\n### Error reporter is gone\n\nReact supports error handling out of the box since v16 using `componentDidCatch`. You can create your own [Error Boundary](https://reactjs.org/docs/error-boundaries.html#introducing-error-boundaries) and install it after `hot` has been applied:\n\n```js\nimport React from 'react'\nimport { hot } from 'react-hot-loader'\nimport ErrorBoundary from './ErrorBoundary'\n\nconst App = () => (\n  <ErrorBoundary>\n    <div>Hello world!</div>\n  </ErrorBoundary>\n)\n\nexport default hot(module)(App)\n```\n\n## Known limitations and side effects\n\n### Note about `hot`\n\n`hot` accepts only React Component (Stateful or Stateless), resulting the `HotExported` variant of it.\nThe `hot` function will setup current module to _self-accept_ itself on reload, and will **ignore** all the changes, made for non-React components.\nYou may mark as many modules as you want. But `HotExportedComponent` **should be the only used export** of a _hot_-module.\n\n> Note: Please note how often we have used `exported` keyword. `hot` is for exports.\n\n> Note: Does nothing in production mode, just passes App through.\n\n### New Components keep executing the old code\n\nThere is no way to hot-update constructor code, as result even new components\nwill be born as the first ones, and then grow into the last ones. As of today, this issue cannot be solved.\n\n## Troubleshooting\n\nIf it doesn't work, in 99% of cases it's a configuration issue. A missing option, a\nwrong path or port. webpack is very strict about configuration, and the best way\nto find out what's wrong is to compare your project to an already working setup,\ncheck out\n**[examples](https://github.com/gaearon/react-hot-loader/tree/master/examples)**,\nbit by bit.\n\nIf something doesn't work, in 99% of cases it's an issue with your code. The Component\ndidn't get registered, due to HOC or Decorator around it, which is making it\ninvisible to the Babel plugin or webpack loader.\n\nWe're also gathering\n**[Troubleshooting Recipes](https://github.com/gaearon/react-hot-loader/blob/master/docs/Troubleshooting.md)**\nso send a PR if you have a lesson to share!\n\n### Switch into debug mode\n\nDebug mode adds additional warnings and can tells you why React Hot Loader is\nnot working properly in your application.\n\n```js\nimport { setConfig } from 'react-hot-loader'\nsetConfig({ logLevel: 'debug' })\n```\n\n## Contributors\n\nThis project exists thanks to all the people who contribute. [Contribute](CONTRIBUTING.md).\n[![contributors][oc-contributors-img]](https://github.com/gaearon/react-hot-loader/graphs/contributors)\n\n## Backers\n\nThank you to all our backers! 🙏 [Become a backer][oc-backer-link]\n[![backers][oc-backer-img]][oc-backer-link]\n\n## Sponsors\n\nSupport this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor][oc-sponsor-link]\n\n<a href=\"https://opencollective.com/react-hot-loader/sponsor/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/react-hot-loader/sponsor/0/avatar.svg\"></a>\n<a href=\"https://opencollective.com/react-hot-loader/sponsor/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/react-hot-loader/sponsor/1/avatar.svg\"></a>\n<a href=\"https://opencollective.com/react-hot-loader/sponsor/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/react-hot-loader/sponsor/2/avatar.svg\"></a>\n<a href=\"https://opencollective.com/react-hot-loader/sponsor/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/react-hot-loader/sponsor/3/avatar.svg\"></a>\n<a href=\"https://opencollective.com/react-hot-loader/sponsor/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/react-hot-loader/sponsor/4/avatar.svg\"></a>\n<a href=\"https://opencollective.com/react-hot-loader/sponsor/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/react-hot-loader/sponsor/5/avatar.svg\"></a>\n<a href=\"https://opencollective.com/react-hot-loader/sponsor/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/react-hot-loader/sponsor/6/avatar.svg\"></a>\n<a href=\"https://opencollective.com/react-hot-loader/sponsor/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/react-hot-loader/sponsor/7/avatar.svg\"></a>\n<a href=\"https://opencollective.com/react-hot-loader/sponsor/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/react-hot-loader/sponsor/8/avatar.svg\"></a>\n<a href=\"https://opencollective.com/react-hot-loader/sponsor/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/react-hot-loader/sponsor/9/avatar.svg\"></a>\n\n## License\n\nMIT\n\n[build-badge]: https://img.shields.io/travis/gaearon/react-hot-loader.svg?style=flat-square\n[build]: https://travis-ci.org/gaearon/react-hot-loader\n[coverage-badge]: https://img.shields.io/codecov/c/github/gaearon/react-hot-loader.svg?style=flat-square\n[coverage]: https://codecov.io/github/gaearon/react-hot-loader\n[version-badge]: https://img.shields.io/npm/v/react-hot-loader.svg?style=flat-square\n[package]: https://www.npmjs.com/package/react-hot-loader\n[license-badge]: https://img.shields.io/npm/l/react-hot-loader.svg?style=flat-square\n[license]: https://github.com/gaearon/react-hot-loader/blob/next/LICENSE\n[prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[chat]: https://gitter.im/gaearon/react-hot-loader\n[chat-badge]: https://img.shields.io/gitter/room/gaearon/react-hot-loader.svg?style=flat-square\n[github-watch-badge]: https://img.shields.io/github/watchers/gaearon/react-hot-loader.svg?style=social\n[github-watch]: https://github.com/gaearon/react-hot-loader/watchers\n[github-star-badge]: https://img.shields.io/github/stars/gaearon/react-hot-loader.svg?style=social\n[github-star]: https://github.com/gaearon/react-hot-loader/stargazers\n[oc-backer-badge]: https://opencollective.com/react-hot-loader/backers/badge.svg\n[oc-sponsor-badge]: https://opencollective.com/react-hot-loader/sponsors/badge.svg\n[oc-contributors-img]: https://opencollective.com/react-hot-loader/contributors.svg?width=890&button=false\n[oc-backer-img]: https://opencollective.com/react-hot-loader/backers.svg?width=890\n[oc-backer-link]: https://opencollective.com/react-hot-loader#backers\n[oc-sponsor-link]: https://opencollective.com/react-hot-loader#sponsor\n","engines":{"node":">= 6"},"gitHead":"675269d7681608c8dbc811ac0bffb1163385e232","license":"MIT","scripts":{"ci":"scripts/ci.sh","lint":"eslint .","test":"yarn test:es2015 && yarn test:modern","build":"rollup -c","format":"prettier --write \"**/*.{js,md,ts,json}\" *.{js,md,ts,json}","release":"standard-version && conventional-github-releaser -p angular","prebuild":"rm -rf dist","precommit":"lint-staged","test:es2015":"cross-env BABEL_TARGET=es2015 jest --no-cache","test:modern":"cross-env BABEL_TARGET=modern jest --no-cache","prepublishOnly":"yarn build"},"_npmUser":{"name":"kashey","email":"thekashey@gmail.com"},"homepage":"https://github.com/gaearon/react-hot-loader","keywords":["react","javascript","webpack","hmr","livereload","live","edit","hot","loader","reload"],"collective":{"url":"https://opencollective.com/react-hot-loader","type":"opencollective"},"repository":{"url":"git+https://github.com/gaearon/react-hot-loader.git","type":"git"},"_npmVersion":"6.2.0","description":"Tweak React components in real time.","directories":{},"lint-staged":{"*.{js,md,ts,json}":["prettier --write","git add"]},"maintainers":[{"name":"calesce","email":"newman.cale@gmail.com"},{"name":"gaearon","email":"dan.abramov@gmail.com"},{"name":"kashey","email":"thekashey@gmail.com"},{"name":"montogeek","email":"montogeek@gmail.com"},{"name":"neoziro","email":"berge.greg@gmail.com"},{"name":"wkwiatek","email":"wojtek.kwiatek@gmail.com"}],"sideEffects":false,"_nodeVersion":"10.9.0","dependencies":{"global":"^4.3.0","prop-types":"^15.6.1","source-map":"^0.7.3","shallowequal":"^1.0.2","fast-levenshtein":"^2.0.6","hoist-non-react-statics":"^2.5.0","react-lifecycles-compat":"^3.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^22.4.3","husky":"^0.14.3","react":"16","enzyme":"^3.7.0","eslint":"^4.19.1","rimraf":"^2.5.2","rollup":"^0.58.2","codecov":"^3.0.1","prettier":"^1.12.1","babel-cli":"^6.7.5","cross-env":"^5.1.4","react-dom":"16","recompose":"^0.27.0","babel-core":"^6.26.3","babel-jest":"^22.4.3","lint-staged":"^7.1.0","react-mount":"^0.1.3","babel-eslint":"^8.2.3","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.0","standard-version":"^4.3.0","babel-preset-react":"^6.5.0","create-react-class":"^15.6.3","rollup-plugin-json":"^2.3.0","eslint-plugin-react":"^7.7.0","react-test-renderer":"16","rollup-plugin-babel":"^3.0.4","eslint-config-airbnb":"^16.0.0","eslint-plugin-import":"^2.11.0","rollup-plugin-uglify":"^3.0.0","rollup-plugin-replace":"^2.0.0","eslint-config-prettier":"^2.6.0","eslint-plugin-jsx-a11y":"^6.0.3","rollup-plugin-commonjs":"^9.1.3","enzyme-adapter-react-15":"^1.0.5","enzyme-adapter-react-16":"^1.6.0","rollup-plugin-node-resolve":"^3.3.0","conventional-github-releaser":"^2.0.2","babel-plugin-external-helpers":"^6.22.0","babel-plugin-dynamic-import-node":"^1.2.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0"},"peerDependencies":{"react":"^15.0.0 || ^16.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-hot-loader_4.4.0_1541846999803_0.8545699236850213","host":"s3://npm-registry-packages"},"_id":"react-hot-loader@4.4.0","version":"4.4.0"}