Razzle: Migration vers Typescript

Créé le 14 avr. 2019  ·  3Commentaires  ·  Source: jaredpalmer/razzle

J'ai un gros projet et je souhaite commencer à migrer vers Typescript un composant à la fois.

J'ai essayé --with-typescript mais cela m'oblige à renommer tous les fichiers à la fois. Je voudrais convertir lentement en veillant à ce que les fichiers non convertis conservent leur extension initiale tandis que les nouveaux fichiers adoptent des extensions de fichier tapuscrit.

Comment puis-je m'y prendre avec razzle?

Commentaire le plus utile

Deviner!

npm i -D @babel/preset-typescript ts-loader typescript

Ajouter @babel/typescript à .babelrc

"presets": [
    "razzle/babel",
    "@babel/typescript"
]

Ajoutez ceci à razzle.config.js

config.resolve.extensions = config.resolve.extensions.concat(['.ts', '.tsx']);
config.module.rules.push({ test: /\.tsx?$/, loader: 'ts-loader' });

Créer un tsconfig.json

{
    "compilerOptions": {
        "experimentalDecorators": true,
        // Target latest version of ECMAScript.
        "target": "esnext",
        // Search under node_modules for non-relative imports.
        "moduleResolution": "node",
        // Process & infer types from .js files.
        "allowJs": false,
        // Enable strictest settings like strictNullChecks & noImplicitAny.
        "strict": false,
        // Disallow features that require cross-file information for emit.
        "isolatedModules": true,
        // Import non-ES modules as default imports.
        "esModuleInterop": true,
        "jsx": "react"
    },
    "include": [
        "src"
    ],
    "exclude": [
        "node_modules",
    ]
}

C'est tout, maintenant vous pouvez renommer les extensions en .ts et .tsx pour activer le script dactylographié pour ces fichiers.

Tous les 3 commentaires

Hé, j'ai également du mal à faire fonctionner l'exemple with-typescript avec des fichiers jsx pour permettre la migration progressive des projets existants.
Est-ce que quelqu'un a une idée de comment archiver cet objectif ?

Deviner!

npm i -D @babel/preset-typescript ts-loader typescript

Ajouter @babel/typescript à .babelrc

"presets": [
    "razzle/babel",
    "@babel/typescript"
]

Ajoutez ceci à razzle.config.js

config.resolve.extensions = config.resolve.extensions.concat(['.ts', '.tsx']);
config.module.rules.push({ test: /\.tsx?$/, loader: 'ts-loader' });

Créer un tsconfig.json

{
    "compilerOptions": {
        "experimentalDecorators": true,
        // Target latest version of ECMAScript.
        "target": "esnext",
        // Search under node_modules for non-relative imports.
        "moduleResolution": "node",
        // Process & infer types from .js files.
        "allowJs": false,
        // Enable strictest settings like strictNullChecks & noImplicitAny.
        "strict": false,
        // Disallow features that require cross-file information for emit.
        "isolatedModules": true,
        // Import non-ES modules as default imports.
        "esModuleInterop": true,
        "jsx": "react"
    },
    "include": [
        "src"
    ],
    "exclude": [
        "node_modules",
    ]
}

C'est tout, maintenant vous pouvez renommer les extensions en .ts et .tsx pour activer le script dactylographié pour ces fichiers.

Si vous venez du futur, découvrez le super plugin dactylographié pris en charge par razzle ici .

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

pseudo-su picture pseudo-su  ·  3Commentaires

panbanda picture panbanda  ·  5Commentaires

MaxGoh picture MaxGoh  ·  4Commentaires

jcblw picture jcblw  ·  4Commentaires

sebmor picture sebmor  ·  4Commentaires