ts-transformer
Diese Seite wurde von PageTurner AI übersetzt (Beta). Nicht offiziell vom Projekt unterstützt. Fehler gefunden? Problem melden →
Verarbeitet String-Nachrichten zur Übersetzung aus Modulen, die react-intl verwenden, insbesondere:
-
Analysiert und überprüft, ob Nachrichten ICU-konform sind und keine Syntaxprobleme aufweisen.
-
Entfernt
descriptionaus dem Nachrichtendeskriptor, um Bytes zu sparen, da es zur Laufzeit nicht verwendet wird. -
Option zum Entfernen von
defaultMessageaus dem Nachrichtendeskriptor, um Bytes zu sparen, da es zur Laufzeit nicht verwendet wird. -
Injiziert automatisch eine Nachrichten-ID basierend auf einem spezifischen Muster.
Installation
- npm
- yarn
npm i @formatjs/ts-transformer
yarn add @formatjs/ts-transformer
Verwendung
Die Standard-Nachrichtendeskriptoren für die Standardsprache der Anwendung werden aus folgenden Quellen verarbeitet: defineMessages(), defineMessage(), intl.formatMessage und <FormattedMessage>; alle davon sind benannte Exporte des React Intl-Pakets.
Über ts-loader
import {transform} from '@formatjs/ts-transformer'
module.exports = {
...otherConfigs,
module: {
rules: [
{
test: /\.tsx?$/,
use: [
{
loader: 'ts-loader',
options: {
getCustomTransformers() {
return {
before: [
transform({
overrideIdFn: '[sha512:contenthash:base64:6]',
}),
],
}
},
},
},
],
},
],
},
}
Über ts-jest in jest.config.js
Erfordert ts-jest@26.4.0 oder höher
// jest.config.js
module.exports = {
// [...]
transform: {
'^.+\\.(ts|tsx)?$': [
'ts-jest',
{
astTransformers: {
before: [
{
path: '@formatjs/ts-transformer/ts-jest-integration',
options: {
// options
overrideIdFn: '[sha512:contenthash:base64:6]',
ast: true,
},
},
],
},
},
],
},
}
Über ts-patch
{
"compilerOptions": {
"plugins": [
{
"transform": "@formatjs/ts-transformer",
"import": "transform",
"type": "config",
"overrideIdFn": "[sha512:contenthash:base64:6]",
"ast": true
}
]
}
}
Über rollup-plugin-typescript2
// rollup.config.js
import typescript from 'rollup-plugin-typescript2'
import {transform} from '@formatjs/ts-transformer'
export default {
input: './main.ts',
plugins: [
typescript({
transformers: () => ({
before: [
transform({
overrideIdFn: '[sha512:contenthash:base64:6]',
ast: true,
}),
],
}),
}),
],
}
Optionen
overrideIdFn
Eine Funktion mit der Signatur (id: string, defaultMessage: string, description: string|object) => string, die es ermöglicht, die ID sowohl im extrahierten JavaScript als auch in den Nachrichten zu überschreiben.
Alternativ kann overrideIdFn ein Template-String sein, der nur verwendet wird, wenn die Nachrichten-ID leer ist.
removeDefaultMessage
Entfernt das Feld defaultMessage im generierten JavaScript nach der Extraktion.
extractSourceLocation
Legt fest, ob Metadaten zum Speicherort der Nachricht in der Quelldatei extrahiert werden sollen. Bei true existieren file, start und end Felder für jeden extrahierten Nachrichtendeskriptor. Standardwert: false.
additionalComponentNames
Zusätzliche Komponentennamen, aus denen Nachrichten extrahiert werden sollen, z.B.: ['FormattedFooBarMessage']. HINWEIS: Standardmäßig wird überprüft, ob FormattedMessage aus moduleSourceName importiert wird, um sicherzustellen, dass Variablen-Alias funktioniert. Diese Option führt diese Prüfung nicht durch und ist daher weniger sicher.
additionalFunctionNames
Zusätzliche Funktionsnamen, aus denen Nachrichten extrahiert werden sollen, z.B.: ['$formatMessage']. Verwenden Sie dies, wenn Sie formatMessage zu etwas Kürzerem wie $t aliasen möchten.
pragma
Parst spezifische zusätzliche benutzerdefinierte Pragmas. Dies ermöglicht es, bestimmte Dateien mit Metadaten wie project zu markieren. Beispielsweise mit dieser Datei:
// @intl-meta project:my-custom-project
import {FormattedMessage} from 'react-intl'
;<FormattedMessage defaultMessage="foo" id="bar" />
und mit der Option {pragma: "@intl-meta"} wird // @intl-meta project:my-custom-project in der Ergebnisdatei in {project: 'my-custom-project'} geparst.
ast
Parst defaultMessage vorab in einen AST für eine schnellere Laufzeitleistung. Dieses Flag hat keine Auswirkung, wenn removeDefaultMessage auf true gesetzt ist.
onMsgExtracted(filePath: string, msgs: MessageDescriptor[])
Callback, der ausgelöst wird, wenn eine Nachricht erkannt wird.
onMetaExtracted(filePath: string, meta: Record<string, string>)
Callback, der ausgelöst wird, wenn ein pragme-Meta erkannt wird.
preserveWhitespace
Legt fest, ob Leerzeichen und Zeilenumbrüche erhalten bleiben sollen.
Ein Beispiel zur Integration finden Sie in compile.ts.