@allthings/babel-plugin-react-intl
v3.0.2
Published
Extracts string messages for translation from modules that use React Intl.
Downloads
1,270
Readme
babel-plugin-react-intl
This has been forked off from babel-plugin-react-intl
with some additional options
Extracts string messages for translation from modules that use React Intl.
Dependencies
React Intl
This Babel plugin works with React Intl v2.x
Babel
- 3.x of this plugin works with Babel 7
- 2.x works with Babel 6
- 1.x works with Babel 5
Installation
$ yarn add --dev @allthings/babel-plugin-react-intl
Usage
This Babel plugin only visits ES6 modules which import
React Intl.
The default message descriptors for the app's default language will be extracted from: defineMessages()
, <FormattedMessage>
, and <FormattedHTMLMessage>
; all of which are named exports of the React Intl package.
If a message descriptor has a description
, it'll be removed from the source after it's extracted to save bytes since it isn't used at runtime.
Via .babelrc
(Recommended)
.babelrc
{
"plugins": [
["react-intl", {
"messagesDir": "./build/messages/"
}]
]
}
Options
messagesDir
: The target location where the plugin will output a.json
file corresponding to each component from which React Intl messages were extracted. If not provided, the extracted message descriptors will only be accessible via Babel's API.enforceDescriptions
: Whether message declarations must contain adescription
to provide context to translators. Defaults to:false
.extractSourceLocation
: Whether the metadata about the location of the message in the source file should be extracted. Iftrue
, thenfile
,start
, andend
fields will exist for each extracted message descriptors. Defaults tofalse
.moduleSourceName
: The ES6 module source name of the React Intl package. Defaults to:"react-intl"
, but can be changed to another name/path to React Intl.additionalComponentNames
: To visit more than the components anddefineMessages
provided byreact-intl
set this option to the following format:"additionalComponentNames": { "react-lingo": ["default", "LingoFormattedMessage"] }
Via Node API
The extract message descriptors are available via the metadata
property on the object returned from Babel's transform()
API:
require('@babel/core').transform('code', {
plugins: ['react-intl']
}) // => { code, map, ast, metadata['react-intl'].messages };