[Webpack] 通过 babel-loader 来编译 tsx 文件, 应该如何配置呢?【热度: 221】

如果你想使用 babel-loader 来编译 TypeScript 文件(.tsx),你需要在 babel.config.jswebpack.config.js 两个文件中进行相应的配置。

首先,在 babel.config.js 文件中,你需要添加 @babel/preset-typescript 预设,以便兼容 TypeScript:

module.exports = {
  presets: ['@babel/preset-env', '@babel/preset-react', '@babel/preset-typescript']
};

接下来,在 webpack.config.js 文件中,你需要对 .tsx 文件使用 babel-loader

module.exports = {
  // ...其他配置项
  module: {
    rules: [
      // ...其他规则
      {
        test: /\.(ts|tsx)$/,
        exclude: /node_modules/,
        use: 'babel-loader',
      },
    ],
  },
};

这样,当 webpack 执行构建时,babel-loader 将会使用 babel.config.js 中配置的预设来编译 .tsx 文件。同时,除了 TypeScript 文件,你还可以使用该配置来编译 JavaScript 文件(.js)和 React JSX 文件(.jsx)。

追问
'@babel/preset-env', '@babel/preset-typescript', '@babel/preset-react' 这三个插件的作用是什么?

  • @babel/preset-env:它是 Babel 的一个预设,用于根据目标环境(浏览器、Node.js 等)自动确定需要转译的 JavaScript 特性,并将其转换为目标环境所支持的代码。它将根据你配置的目标环境和浏览器的使用情况,智能地选择需要转译的特性,以减小转译后的代码体积。它也包含了一些插件,例如转换箭头函数、解构赋值、模板字符串等。

  • @babel/preset-typescript:它是 Babel 的一个预设,用于将 TypeScript 代码转译为 JavaScript 代码,以便在不支持 TypeScript 的环境中运行。它包含了一些插件,例如转换 TypeScript 的类型注解、类成员修饰符、泛型类型等。

  • @babel/preset-react:它是 Babel 的一个预设,用于将 React 的 JSX 语法转译为普通的 JavaScript 代码,以便在不支持 JSX 的环境中运行。它也包含了一些插件,例如转换 JSX 语法、处理 React 的内置组件等。