webpack打包ts代码

news2025/7/14 13:43:21

webpack整合

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

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

步骤如下:

(1)初始化项目

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

(2)下载构建工具

命令如下:

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中的清除插件,每次构建都会先清除目录

(3)配置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中指定要兼容的浏览器版本;

(4)可能的报错:

WARNING in configuration

The 'mode' option has not been set, webpack will fallback to 'production' for this value.

添加:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/369286.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDE 文档注释使用,模板注释,ide配置templates

文档注释基于javadoc模板 类注释 /*** 暂无介绍** author admin* version 1.0.0* <dt><span class"simpleTagLabel">时间:</span></dt>* <dd>2023/2/24</dd>*/方法注释 /*** 暂无描述** author admin* param args */javadoc相…

PowerShell Install Redis

Redis 前言 Redis&#xff08;Remote Dictionary Server )&#xff0c;即远程字典服务&#xff0c;是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 Redis dowload Redis WindowsdownloadRedi…

字节在职5年,一个测试工程师的坎坷之路

几年前进入到IT行业&#xff0c;现在发现学习软件测试的人越来越多&#xff0c;今天我想根据自己的行业经验给大家提一些建议。 跟其他行业相比&#xff0c;做软件测试的岗位确实算是高薪职业&#xff0c;我们那个时候起步的工资并不高&#xff0c;而看现在很多毕业的学生薪资都…

Scala-面向对象引入(包、类和对象)

包 包对象 导包 类和对象 方法和构造器 包 Scala 包的三大作用&#xff08;和 Java 一样&#xff09;&#xff1a; 区分相同名字的类当类很多时&#xff0c;可以很好的管理类控制访问范围 基本语法 package 包名 Scala 有两种包的管理风格&#xff0c;一种方式和 Java …

Transformer模型

图1图2第一张图transfomer模型图&#xff0c;第二张图是是以各个功能模块的形式来呈现transformer的。 在这里我们来讲transformer的几个关键技术: 1.encoder部分的位置嵌入 2.encoder部分的多头注意力机制 3.残差连接 4.LayerNormalization 5.decoder部分的多头注意力的…

如何使用U-Mail搭建企业邮件服务器?

在当今的信息时代&#xff0c;企业也应该跟上时代的步伐。做好企业信息化建设&#xff0c;对企业事业单位尤为重要。电子邮件作为企业信息化过程中的重要组成部分&#xff0c;在企业内部沟通和外部沟通中发挥着重要作用。目前&#xff0c;有实力的企业已经开始倾向于自己搭建邮…

SpringBoot2 黑马 运维实用 01 工程打包与运行

文章目录打包Windows环境运行Windows端口占用使用的排查指令Linux环境运行Linux常用命令jar包导入linux启动jar打包 使用Maven-项目-生命周期-package或者输入命令 mvn package 打包后是一个 .jar 后缀的压缩包 classes是你写的代码 lib是程序运行所依赖的所有jar包 org是启动…

Jenkins配置项目教程

在上一篇[Jenkins的使用教程](https://blog.csdn.net/weixin_43787492/article/details/129028131?spm1001.2014.3001.5501)中我介绍了如何创建一个项目 Jenkins在创建项目中提供了很多功能供我们选择&#xff0c;这里我将对配置项目做一个较完整的介绍Jenkins配置项目0、所有…

ChatGPT 的工作原理:机器人背后的模型

这篇对支持 ChatGPT 的机器学习模型的温和介绍&#xff0c;将从大型语言模型的介绍开始&#xff0c;深入探讨使 GPT-3 得到训练的革命性自我注意机制&#xff0c;然后深入研究人类反馈的强化学习&#xff0c;使 ChatGPT 与众不同的新技术。 大型语言模型 ChatGPT 是一类被称…

mybatis入门配置

mybatis mybatis是一款持久层框架&#xff0c;用于简化JDBC开发 持久层&#xff1a;负责将数据保存到数据库的那一层代码JavaEE的三层架构&#xff1a;表现层、业务层、持久层、&#xff0c;就相当与mvc设计模式过程中的Controller、service、dao 1.创建一个maven模块&#…

【离线数仓-7-数据仓库开发DIM层设计要点-每日全量表同步】

离线数仓-7-数据仓库开发DIM层设计要点-每日全量表同步离线数仓-7-数据仓库开发DIM层设计要点-每日全量表同步1.DIM层 维度模型 设计要点1. 维度表的相关设计2.维度表 设计要点2.DIM层 各维度表分析1.商品维度表1.商品维度表 前期梳理2.商品维度表 DDL表设计分析3.商品维度表 加…

JM员工福利与健康平台,企业关怀Always Online

庄信万丰(Johnson Matthey, JM)&#xff0c;全球性专用化学品公司&#xff0c;是可持续发展技术的全球领导者。在30多个国家和地区拥有13000多名员工。 JM的价值观之一是保护人类和地球。在生产过程中&#xff0c;JM保持对环境保护和能源清洁的高度关注&#xff1b;在员工福利…

MySQL简介、M有SQL的存储引擎、表、字段和数据

Java知识点总结&#xff1a;想看的可以从这里进入 目录2、MySQL特性介绍2.1、MySQL简介2.2、存储引擎2.3、表、字段、数据2、MySQL特性介绍 2.1、MySQL简介 MySQL 是一个关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;于2009年被 Oracle 公司收购。它是一种关…

计及绿证交易及碳排放的含智能楼宇微网优化调度(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

MySQL语法之DDL数据定义语言(操作数据、数据表)

Java知识点总结&#xff1a;想看的可以从这里进入 目录3.4、SQL语言3.4.1、DDL数据定义1、操作数据库2、操作数据表3、约束3.4、SQL语言 SQL是结构化查询语言&#xff08;Structured Query Language&#xff09;的缩写&#xff0c;是一门标准的计算机语言&#xff0c;主要是用…

授人以渔command not found: ***

配置环境变量是每个开发人员绕不开的初级本领。搜了一下大多数博客都是列出自己系统配置的步骤&#xff0c;授人以鱼不如授人以渔&#xff0c;今天记录一下自己配置验证的方法过程&#xff0c;方便初学者配置。 本文围绕——我在macOS配置http-server的探究验证过程 1、下载 …

第52篇-小某书参数x-s分析【2023-02-24】

声明:该专栏涉及的所有案例均为学习使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!如有侵权,请私信联系本人删帖! 一、前言 新网站改版好久了,今天来看看 aHR0cHM6Ly93d3cueGlhb2hvbmdzaHUuY29tL2V4cGxvcmU=二、网站分析 打开一篇文章,查看下…

性能再提升、体验再升级,极米Z6X Pro重新定义轻薄与非凡

近年来&#xff0c;随着现代投影技术的更新与发展&#xff0c;智能投影仪似乎正在成为消费者们的日常必备产品。根据相关信息显示&#xff0c;中国已经成为消费电子产品的全球重要制造基地&#xff0c;尤其是智能投影仪产业正面临着前所未有的机遇。 作为国内智能投影行业的领导…

2023Java权威面试指南(Alibaba版),完爆“金三银四”

这次金三银四你准备好了吗&#xff1f; 莫慌莫慌&#xff0c;“面试造火箭&#xff0c;工作拧螺丝” 说得不无道理&#xff0c;偶然从朋友那得到的这份Alibaba内部疯传《Java权威面试指南&#xff08;阿里版&#xff09;》堪称精品&#xff0c;或可能助你一臂之力&#xff0c;…

【沐风老师】3DMAX一键楼梯脚本插件StairGenerator使用教程

3DMAX一键楼梯插件StairGenerator&#xff0c;不需要花费太多的时间&#xff0c;轻松从2D平面图生成3D楼梯模型&#xff0c;生成的楼梯模型细节丰富真实。 【主要功能】 1.简单&#xff1a;轻松实现2D到3D建模。 2.具有最详细三维结构的台阶平面图。 3.楼梯各部件完全参数化…