教你使用webpack打包编译TypeScript代码

作者:韩子昕 时间:2024-06-10 22:53:32 

TypeScript打包

 webpack整合

通常情况下,实际开发中我们都需要使用构建工具对代码进行打包;

TS同样也可以结合构建工具一起使用,下边以webpack为例介绍一下如何结合构建工具使用TS;

步骤如下:

初始化项目

进入项目根目录,执行命令 npm init -y,创建package.json文件

下载构建工具

命令如下:


npm i -D webpack webpack-cli webpack-dev-server typescript ts-loader clean-webpack-plugin

共安装了7个包:

  • webpack:构建工具webpack

  • webpack-cli:webpack的命令行工具

  • webpack-dev-server:webpack的开发服务器

  • typescript:ts编译器

  • ts-loader:ts加载器,用于在webpack中编译ts文件

  • html-webpack-plugin:webpack中html插件,用来自动创建html文件

  • clean-webpack-plugin:webpack中的清除插件,每次构建都会先清除目录

配置webpack

根目录下创建webpack的配置文件webpack.config.js


const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const { CleanWebpackPlugin } = require("clean-webpack-plugin");

module.exports = {
  optimization:{
      minimize: false // 关闭代码压缩,可选
  },

entry: "./src/index.ts",

devtool: "inline-source-map",

devServer: {
      contentBase: './dist'
  },

output: {
      path: path.resolve(__dirname, "dist"),
      filename: "bundle.js",
      environment: {
          arrowFunction: false // 关闭webpack的箭头函数,可选
      }
  },

resolve: {
      extensions: [".ts", ".js"]
  },

module: {
      rules: [
          {
              test: /\.ts$/,
              use: {
                  loader: "ts-loader"    
              },
              exclude: /node_modules/
          }
      ]
  },

plugins: [
      new CleanWebpackPlugin(),
      new HtmlWebpackPlugin({
          title:'TS测试'
      }),
  ]
}

配置TS编译选项

根目录下创建tsconfig.json,配置可以根据自己需要


{
  "compilerOptions": {
      "target": "ES2015",
      "module": "ES2015",
      "strict": true
  }
}

修改package.json配置

修改package.json添加如下配置


{
  ...
  "scripts": {
      "test": "echo \"Error: no test specified\" && exit 1",
      "build": "webpack",
      "start": "webpack serve --open chrome.exe"
  },
  ...
}

项目使用

在src下创建ts文件,并在并命令行执行npm run build对代码进行编译;

或者执行npm start来启动开发服务器;

Babel

    除了webpack,开发中还经常需要结合babel来对代码进行转换;

以使其可以兼容到更多的浏览器,在上述步骤的基础上,通过以下步骤再将babel引入到项目中;

虽然TS在编译时也支持代码转换,但是只支持简单的代码转换;

对于例如:Promise等ES6特性,TS无法直接转换,这时还要用到babel来做转换;

安装依赖包:


npm i -D @babel/core @babel/preset-env babel-loader core-js

共安装了4个包,分别是:

  • @babel/core:babel的核心工具

  • @babel/preset-env:babel的预定义环境

  • @babel-loader:babel在webpack中的加载器

  • core-js:core-js用来使老版本的浏览器支持新版ES语法

修改webpack.config.js配置文件


module: {
   rules: [
       {
           test: /\.ts$/,
           use: [
               {
                   loader: "babel-loader",
                   options:{
                       presets: [
                           [
                               "@babel/preset-env",
                               {
                                   "targets":{
                                       "chrome": "58",
                                       "ie": "11"
                                   },
                                   "corejs":"3",
                                   "useBuiltIns": "usage"
                               }
                           ]
                       ]
                   }
               },
               {
                   loader: "ts-loader",
               }
           ],
           exclude: /node_modules/
       }
   ]
}

如此一来,使用ts编译后的文件将会再次被babel处理;

使得代码可以在大部分浏览器中直接使用;

同时可以在配置选项的targets中指定要兼容的浏览器版本;

来源:https://blog.csdn.net/weixin_52139094/article/details/118311031

标签:webpack,打包,编译,TypeScript
0
投稿

猜你喜欢

  • MySql树形结构(多级菜单)查询设计方案

    2024-01-18 15:35:42
  • 微软工程师讲解SQL server阻塞

    2008-01-05 14:02:00
  • 索引的原理及索引建立的注意事项

    2012-08-21 10:27:47
  • Python OpenCV一个窗口中显示多幅图像

    2023-12-09 19:38:04
  • Python实现求数列和的方法示例

    2021-07-15 05:27:08
  • asp如何使用SMTP Service发送邮件?

    2010-06-05 12:43:00
  • 对python使用http、https代理的实例讲解

    2022-03-13 00:03:08
  • 详解Go语言中的内存对齐

    2024-04-25 15:08:28
  • python pyg2plot的原理知识点总结

    2021-03-27 23:13:51
  • python变量的存储原理详解

    2023-03-26 14:46:48
  • Python ArcPy实现批量拼接长时间序列栅格图像

    2021-09-07 18:48:53
  • Python操作PDF实现制作数据报告

    2022-05-09 21:41:51
  • go reflect要不要传指针原理详解

    2024-04-26 17:27:14
  • 用django设置session过期时间的方法解析

    2022-11-16 11:36:06
  • SQL根据指定分隔符分解字符串实现步骤

    2023-07-13 03:09:14
  • python PyTorch预训练示例

    2022-07-06 18:24:02
  • Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例

    2023-09-20 13:29:27
  • CKeditor富文本编辑器使用技巧之添加自定义插件的方法

    2024-04-18 09:52:24
  • Ubuntu18.04安装mysql5.7.23的教程

    2024-01-19 21:20:03
  • python通过opencv实现批量剪切图片

    2021-05-12 12:50:14
  • asp之家 网络编程 m.aspxhome.com