当前位置: 首页 > 面试题库 >

将create-react-app从javascript迁移到打字稿

阴高寒
2023-03-14
问题内容

几个月前,我使用create-react-app启动了一个react项目,我对将项目从Javascript迁移到Typescript很感兴趣。

我看到有一种使用typescript使用标志创建react应用的方法:

--scripts-version=react-scripts-ts

但是我没有找到任何解释如何将现有的JS项目迁移到TS。我需要逐步完成它,以便可以同时使用.js和.ts文件,以便可以随时间进行转换。有人对这次迁移有任何经验吗?要执行此工作应采取哪些必要步骤?


问题答案:

我找到了一种将create-react-app从javascript迁移到打字稿的解决方案,这种方式 不需要 弹出。

  1. 通过运行命令使用打字稿创建一个临时react项目create-react-app --scripts-version=react-scripts-ts (注意-需要create-react-app全局安装)
  2. 在您自己的项目中-在package.json文件下删除react-scripts
  3. react-scripts-ts通过运行命令添加到您的项目,yarn add react-scripts-ts或者如果您正在使用npm,则添加npm install react-scripts-ts。或者,添加"react-scripts-ts": "2.8.0"到package.json。
  4. 从您在步骤1中创建的项目中,将文件:复制tsconfig.json, tsconfig.test.json tslint.json到您自己的项目中
  5. 在自己的项目中package.json,根据脚本部分,将react-scripts实例react-scripts-ts(应该是下startbuildtesteject
  6. 安装分型为通过安装使用纱或NPM以下模块反应:@types/node@types/react@types/react-domdevDependencies如果使用package.json,请放在部分中。
  7. index.js文件名更改为index.tsx
  8. 在您的tsconfig.json文件中,添加以下配置:"allowSyntheticDefaultImports": true- 有关更多信息

注意 步骤7可能需要进行其他修改,具体取决于index.js文件中的内容(如果它取决于项目中的JS模块)。

现在,您可以运行您的项目,它可能会工作,对于那些遇到You may need an appropriate loader to handle this file type有关.js文件错误的人来说,它发生是因为babel不知道如何从.tsx文件中加载.js文件。我们需要做的是更改项目配置。我发现不运行eject就可以使用react-
app-rewired
包。该软件包可让您配置外部配置,该配置将被添加/覆盖默认项目设置。我们将使用babel加载这些类型的文件。让我们继续:

  1. react-app-rewired使用yarn或npm 安装软件包
  2. 在您的根文件夹(package.json位于其中)中创建一个新文件,名称为config-overrides.js
  3. 将此代码放在config-overrides文件中:
        var paths = require('react-scripts-ts/config/paths')

    module.exports = function override(config) {
      config.module.rules.push({
        test: /\.(js|jsx)$/,
        include: paths.appSrc,
        loader: require.resolve('babel-loader'),
        options: {
            babelrc: false,
            presets: [require.resolve('babel-preset-react-app')],
            cacheDirectory: true,
        },
      })

      return config
    }

编辑的package.json所以start/start-jsbuildtest,和eject脚本使用反应-APP-
重新接线如图所示项目自述。例如"test": "react-app-rewired test --scripts-version react-scripts- ts --env=jsdom"

现在您可以启动项目,并且应该解决问题。您可能需要根据项目(其他类型等)进行其他修改。

希望能帮助到你

如注释中的建议,可以定义:"compilerOptions": { "allowJs": true}在tsconfig.json文件中,因此您可以混合JS和TS,而无需react-app-rewired。谢谢提这个!

更新: create-react-app版本2.1.0支持打字稿,因此对于那些从头开始的人来说,您可以使用它来创建带有打字稿的新应用程序,并且根据文档,应使用以下命令来完成:

$ npx create-react-app my-app --typescript

对于现有项目,在更新到版本2.1.0之后,使用以下命令将以下软件包添加到项目的依赖项中:

$ npm install --save typescript @types/node @types/react @types/react-dom @types/jest

然后您可以简单地将.js重命名为.ts文件。



 类似资料:
  • TypeScript不是凭空存在的。 它从JavaScript生态系统和大量现存的JavaScript而来。 将JavaScript代码转换成TypeScript虽乏味却不是难事。 接下来这篇教程将教你怎么做。 在开始转换TypeScript之前,我们假设你已经理解了足够多本手册里的内容。 如果你打算要转换一个React工程,推荐你先阅读React转换指南。 如果你在写纯JavaScript,你大

  • Rax 在 DSL 层面与框架设计方面借鉴了 React 的部分思想,但是舍弃了 React 部分传统的 API,所以体积上更加轻量。Rax 推荐开发者使用函数组件(Function Component)配合 Hooks 开发,相比传统类组件(Class Components)是一种更轻量便捷的开发风格。 接下来,我们将介绍两种把现有项目从 React 迁移到 Rax 方法。 通过修改写法迁移 由

  • Create React App 不用配置就可以创建 React App。 全局安装: npm install -g create-react-app 创建 App: create-react-app my-appcd my-app/ 启动 npm: npm start 打开 http://localhost:3000/  查看你的 App。 如果你准备将其部署到生产环境,只需创建一个压缩包,并且运行 npm run build。

  • Create React Native App The fastest way to create universal React Native apps npx create-react-native-app Once you're up and running with Create React Native App, visit this tutorial for more informat

  • 问题内容: 我有一个使用Expressjs的前端create-react-app和一个后端API。 我已将后端API成功部署到Google App Engine。 但是现在我需要将create-react-app部署到Google Cloud,这变得 非常令人困惑,我尝试了一段时间的google,目前尚无真正/推荐的 方法。 至少我看到其他人建议以两种方式这样做: =>我看到使用这种方式有一个缺点

  • 因此,谷歌计算引擎昨天宣布,处理能力的价格比应用引擎的标准要好得多。有没有人知道这次迁移会是什么样子的,或者我们是否能够在当前的应用程序中使用新的google compute虚拟机?