diff --git a/packages/plugin-react-refresh/README.md b/packages/plugin-react-refresh/README.md index 49f51a5cd77048..4a6e449aa0d688 100644 --- a/packages/plugin-react-refresh/README.md +++ b/packages/plugin-react-refresh/README.md @@ -25,6 +25,16 @@ export default { } ``` +## Specifying Additional Babel Plugins + +```js +export default { + plugins: [reactRefresh({ + plugins: ['@emotion/babel-plugin'] + })] +} +``` + [Full list of Babel parser plugins](https://babeljs.io/docs/en/babel-parser#ecmascript-proposalshttpsgithubcombabelproposals). ### Notes diff --git a/packages/plugin-react-refresh/index.js b/packages/plugin-react-refresh/index.js index 0a1a415da17d7f..339228947dedda 100644 --- a/packages/plugin-react-refresh/index.js +++ b/packages/plugin-react-refresh/index.js @@ -1,7 +1,6 @@ // @ts-check const fs = require('fs') const { transformSync, ParserOptions } = require('@babel/core') - const runtimePublicPath = '/@react-refresh' const runtimeFilePath = require.resolve( 'react-refresh/cjs/react-refresh-runtime.development.js' @@ -96,7 +95,7 @@ function reactRefreshPlugin(opts) { // commonly used with TS. parserPlugins.push('typescript', 'decorators-legacy') } - if (opts && opts.parserPlugins) { + if (opts && Array.isArray(opts.parserPlugins)) { parserPlugins.push(...opts.parserPlugins) } @@ -116,7 +115,8 @@ function reactRefreshPlugin(opts) { plugins: [ require('@babel/plugin-transform-react-jsx-self'), require('@babel/plugin-transform-react-jsx-source'), - [require('react-refresh/babel'), { skipEnvCheck: true }] + [require('react-refresh/babel'), { skipEnvCheck: true }], + ...(opts && Array.isArray(opts.plugins) ? opts.plugins : []) ], ast: !isReasonReact, sourceMaps: true,