文章目录

TypeScript 构建工具:Webpack 与 ts-loader

发布于 2026-04-02 18:13:21 · 浏览 7 次 · 评论 0 条

TypeScript 构建工具:Webpack 与 ts-loader

要让浏览器运行 TypeScript 代码,必须先把 .ts 文件编译成 .js 文件。Webpack 是一个流行的“打包工具”,它可以自动完成这个转换过程,而 ts-loader 就是 Webpack 用来处理 TypeScript 文件的插件。下面手把手教你从零搭建一个能运行 TypeScript 的 Webpack 项目。


准备工作:初始化项目

创建一个新的项目文件夹,并进入该目录:

mkdir my-ts-project
cd my-ts-project

初始化 npm 配置文件,一路回车使用默认选项即可:

npm init -y

这会生成一个 package.json 文件,用于记录项目依赖和脚本命令。


安装必要依赖

你需要安装四类工具:

  1. TypeScript 本身:提供类型检查和编译能力。
  2. Webpack 核心:负责打包整个项目。
  3. Webpack 开发服务器:启动本地预览服务。
  4. ts-loader:让 Webpack 能读懂 .ts 文件。

执行以下命令一次性安装所有依赖:

npm install --save-dev typescript webpack webpack-cli webpack-dev-server ts-loader

注意:--save-dev 表示这些包只在开发阶段使用,不会被打包进最终上线代码。


配置 TypeScript 编译规则

创建一个名为 tsconfig.json 的文件,这是 TypeScript 的配置文件。内容如下:

{
  "compilerOptions": {
    "outDir": "./dist/",
    "noImplicitAny": true,
    "module": "es6",
    "target": "es5",
    "jsx": "react",
    "allowJs": true,
    "moduleResolution": "node"
  }
}

关键参数解释:

  • "outDir":指定编译后的 JS 文件输出位置(这里设为 ./dist/)。
  • "target": "es5":确保生成的 JS 能在老版本浏览器运行。
  • "module": "es6":使用现代模块语法,Webpack 会进一步处理。

配置 Webpack 打包规则

创建 webpack.config.js 文件,告诉 Webpack 如何处理 TypeScript 文件:

const path = require('path');

module.exports = {
  entry: './src/index.ts',
  module: {
    rules: [
      {
        test: /\.tsx?$/,
        use: 'ts-loader',
        exclude: /node_modules/,
      },
    ],
  },
  resolve: {
    extensions: ['.tsx', '.ts', '.js'],
  },
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist'),
  },
  devServer: {
    static: {
      directory: path.join(__dirname, 'dist'),
    },
    port: 3000,
  },
};
```

配置说明:
- `entry: './src/index.ts'`:指定程序入口文件。
- `test: /\.tsx?$/`:匹配所有 `.ts` 和 `.tsx` 文件。
- `use: 'ts-loader'`:用 `ts-loader` 处理匹配到的文件。
- `output.path`:打包结果输出到 `dist` 目录。
- `devServer.port: 3000`:本地开发服务器监听 3000 端口。

---

## 编写你的第一个 TypeScript 文件

**创建**源代码目录和入口文件:

```bash
mkdir src

src 目录下创建 index.ts 文件,写入以下代码:

function greet(name: string): string {
  return `Hello, ${name}!`;
}

const message = greet('TypeScript');
console.log(message);

这段代码定义了一个带类型标注的函数,并在控制台输出结果。


添加便捷脚本命令

为了简化操作,编辑 package.json 文件,在 "scripts" 字段中添加两条命令:

{
  "scripts": {
    "build": "webpack --mode=production",
    "start": "webpack serve --mode=development"
  }
}

现在你可以用简短命令代替完整 CLI 参数:

  • npm run build:生成生产环境代码。
  • npm run start:启动本地开发服务器。

运行并验证结果

方式一:开发模式(带热更新)

执行以下命令启动开发服务器:

npm run start

终端会显示类似信息:

Project is running at http://localhost:3000/

打开浏览器,访问 http://localhost:3000。虽然页面是空白的,但打开开发者工具的 Console 面板,你应该能看到输出:

Hello, TypeScript!

此时修改 src/index.ts 文件,保存后浏览器会自动刷新并显示新结果。

方式二:生产构建

执行构建命令:

npm run build

完成后,项目根目录会生成 dist 文件夹,里面包含:

  • bundle.js:打包后的 JavaScript 文件。
  • (可能还有 index.html,如果你后续添加了 HTML 模板)

你可以直接在浏览器中打开 dist/bundle.js 查看编译结果,或配合 HTML 文件使用。


常见问题排查

如果遇到错误,请按以下顺序检查:

  1. 文件路径是否正确
    确保 webpack.config.js 中的 entry 路径与实际 index.ts 位置一致。

  2. 是否遗漏依赖
    运行 npm list ts-loader 确认 ts-loader 已安装。

  3. TypeScript 配置冲突
    如果同时存在 tsconfig.json 和 Webpack 配置,确保两者模块系统一致(如都用 es6)。

  4. 端口被占用
    修改 webpack.config.jsdevServer.port 的值,例如改为 3001


扩展:添加 HTML 模板

目前页面是空白的,因为缺少 HTML 文件。创建 src/index.html

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>TypeScript App</title>
</head>
<body>
  <script src="bundle.js"></script>
</body>
</html>

然后安装 html-webpack-plugin 自动注入脚本:

npm install --save-dev html-webpack-plugin

修改 webpack.config.js,顶部加入:

const HtmlWebpackPlugin = require('html-webpack-plugin');

并在 module.exports 中添加:

plugins: [
  new HtmlWebpackPlugin({
    template: './src/index.html'
  })
],

重新运行 npm run start,页面将自动加载 HTML 模板,且 <script> 标签已正确引入 bundle.js

评论 (0)

暂无评论,快来抢沙发吧!

扫一扫,手机查看

扫描上方二维码,在手机上查看本文