Razzle: 迁移到打字稿

创建于 2019-04-14  ·  3评论  ·  资料来源: jaredpalmer/razzle

我有一个大型项目,并希望一次迁移到一个组件。

我试过 --with-typescript 但这需要我一次重命名所有文件。 我想慢慢转换,确保未转换的文件保留其初始扩展名,而新文件采用打字稿文件扩展名。

我如何在 razzle 中解决这个问题?

最有用的评论

弄清楚了!

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

@babel/typescript到 .babelrc

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

将此添加到 razle.config.js

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

创建一个 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",
    ]
}

就是这样,现在您可以将扩展名重命名为 .ts 和 .tsx 以启用这些文件的打字稿。

所有3条评论

嘿,我也面临着让with-typescript示例与jsx文件一起工作以允许逐步迁移现有项目的困难。
有没有人知道如何存档这个目标?

弄清楚了!

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

@babel/typescript到 .babelrc

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

将此添加到 razle.config.js

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

创建一个 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",
    ]
}

就是这样,现在您可以将扩展名重命名为 .ts 和 .tsx 以启用这些文件的打字稿。

如果你从未来来到这里,检出大球艺支持打字稿插件这里

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

knipferrc picture knipferrc  ·  5评论

panbanda picture panbanda  ·  5评论

mhuggins picture mhuggins  ·  3评论

Ronny25 picture Ronny25  ·  5评论

charlie632 picture charlie632  ·  4评论