Razzle: Migrar a TypeScript

Creado en 14 abr. 2019  ·  3Comentarios  ·  Fuente: jaredpalmer/razzle

Tengo un proyecto grande y deseo comenzar a migrar a Typescript un componente a la vez.

He intentado --with-typescript, pero eso me obliga a cambiar el nombre de todos los archivos a la vez. Me gustaría convertir lentamente, asegurándome de que los archivos no convertidos mantengan su extensión inicial mientras que los archivos nuevos adoptan extensiones de archivo mecanografiado.

¿Cómo hago esto en razzle?

Comentario más útil

¡Lo averigué!

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

Agregar @babel/typescript a .babelrc

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

Agregue esto a razzle.config.js

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

Crea 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",
    ]
}

Eso es todo, ahora puede cambiar el nombre de las extensiones a .ts y .tsx para habilitar el mecanografiado para esos archivos.

Todos 3 comentarios

Oye, también me estoy costando mucho intentar que el ejemplo with-typescript funcione con archivos jsx para permitir la migración progresiva de proyectos existentes.
¿Alguien tiene una idea de cómo archivar este objetivo?

¡Lo averigué!

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

Agregar @babel/typescript a .babelrc

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

Agregue esto a razzle.config.js

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

Crea 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",
    ]
}

Eso es todo, ahora puede cambiar el nombre de las extensiones a .ts y .tsx para habilitar el mecanografiado para esos archivos.

Si vienes aquí desde el futuro, echa un vistazo al gran complemento de mecanografiado compatible con razzle aquí .

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

howardya picture howardya  ·  5Comentarios

MaxGoh picture MaxGoh  ·  4Comentarios

ewolfe picture ewolfe  ·  4Comentarios

kkarkos picture kkarkos  ·  3Comentarios

mhuggins picture mhuggins  ·  3Comentarios