文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何使用webpack打包ts代码

2023-07-02 12:55

关注

今天小编给大家分享一下如何使用webpack打包ts代码的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

使用 webpack 打包

生成 package.json

本质上,webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具。在我们的项目中要使用 webpack 首先应该初始化,生成的默认的 package.json,执行 npm init -y 后会在项目根目录下生成 package.json(其中 -y 是直接略过所有问答,直接都 yes)

如何使用webpack打包ts代码

安装 cnpm

接下来需要安装 webpack 所需依赖,我们可以使用 npm 或 cnpm 安装。这里说点题外话。npm 作为包管理器,由于服务器不在国内所以有的时候速度会慢一点,所以我们来安装淘宝团队的 cnpm,这个就是 npm 在国内的镜像,执行以下命令来安装 cnpm

npm install cnpm -g --registry=https://registry.npm.taobao.org

使用 cnpm -v来检查是否安装成功

如何使用webpack打包ts代码

安装 webpack 相关

cnpm i -D webpack webpack-cli typescript ts-loader

i 是 install 的简写
-D 表示安装到开发环境,也就是安装并将依赖信息写在 package.json 中的 devDependencies中,等同于 --save-dev
webpack 安装打包工具的核心代码
webpack-cli webpack 命令行工具
typescript ts的核心包
ts-loader 必须安装这个才能让 ts 在 webpack 中使用

执行命令后,查看 package.json,多了 devDependencies 节点,说明安装成功啦

如何使用webpack打包ts代码

编写 webpack 配置文件

新建一个 webpack.config.js 文件到根目录

//引入一个包const path = require('path')//webpack 中的所有配置都应该写在 module.exports 中module.exports = {    //指定入口文件    entry: "./src/index.ts",    //指定打包文件所在目录    output: {        //指定打包文件的目录        path: path.resolve(__dirname, 'dist'),        //打包后文件的名字        filename: "bundle.js"    },    //指定webpack打包时使用的模块    module: {        //指定要加载的规则        rules: [            {                //test 指定规则生效的文件,以下匹配以 ts 结尾的文件                test:/\.ts$/,                //要使用的loader,用 ts-loader 处理以 ts 结尾的文件                use: 'ts-loader',                //要排除的文件                exclude: /node_modules/            }        ]    }};

创建 tsconfig.json

上节我们已经讲了,先写这些:

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

修改 package.json

 "build": "webpack"

增加位置如下:

如何使用webpack打包ts代码

使用webpack打包

命令:npm run build

在 webpack.config.js 中我们指定了入口文件为 index.ts,我们在里边随便编写一些内容

index.ts

function sum(a:number,b:number):number{    return a+b;}console.log(sum(11,22));

在 webpack.config.js 中我们指定了打包文件的目录为 dist,打包后的文件名是 bundle.js,所以执行命令npm run build后就使用 webpack 进行了打包,结果如下:

如何使用webpack打包ts代码

到此为止,我们就实现了最简单的使用 webpack 打包的功能

安装插件

html-webpack-plugin

① 安装插件
执行 cnpm i -D html-webpack-plugin
html-webpack-plugin 帮助我们自动生成 html 文件

② 引入插件
webpack.config.js 中引入插件

//引入一个包......//引入插件const HTMLWebpackPlugin = require("html-webpack-plugin")//webpack 中的所有配置都应该写在 module.exports 中module.exports = {    ......    //配置webpack插件    plugins: [        new HTMLWebpackPlugin(),    ]};

③打包
先执行 npm run build

这样目录下就生成了 html 文件

如何使用webpack打包ts代码

我们可以自定义或其他一些内容

//配置webpack插件    plugins: [        new HTMLWebpackPlugin({            title: "自定义"        }),    ]

还可以设置一个网页模板,我们可以在 src 下新建一个 index.html 做为模板

如何使用webpack打包ts代码

然后在 webpack.config.js 中将其设置为模板

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

再次运行 npm run build 生成的网页就是根据刚才写好的模板生成的

如何使用webpack打包ts代码

webpack-dev-server

①、执行cnpm i -D webpack-dev-server
②、在 pages.json 中 scripts 节点下增加 "start": "webpack serve --open"

如何使用webpack打包ts代码

意思是启动 webpack 服务器,这样我们刚才生成的 html 会用默认浏览器打开

③、运行
直接点击上边截图的运行三角形,或者执行 npm start

如果报错 The mode option has not been set......

如何使用webpack打包ts代码

解决办法
在 webpack.config.js 中根节点下增加 mode: 'development'

(如果还处在上次命令,可以按 ctrl+c 终止命令)再次执行 npm start 即可打开默认浏览器

如何使用webpack打包ts代码

这个网页是实时更新的,我们修改 index.ts ,多输出一行文字,右侧浏览器也会自动输出

如何使用webpack打包ts代码

clear-webpack-plugin

这个插件的作用是每次编译会先清空编译文件夹下的文件,再生成,这样就保证了都是最新文件

①、安装

cnpm i -D clean-webpack-plugin

②、引入、配置

//引入clean插件const { CleanWebpackPlugin } = require('clean-webpack-plugin') //配置webpack插件    plugins: [        new CleanWebpackPlugin(),        ......    ],

babel

babel 用来解决兼容性问题

①、安装

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

②、配置
修改 webpack.config.js

......//webpack 中的所有配置都应该写在 module.exports 中module.exports = {    //指定入口文件    entry: "./src/index.ts",    //指定打包文件所在目录    output: {        ......        //告诉webpack不使用箭头函数        environment: {            arrowFunction: false        }    },    //指定webpack打包时使用的模块    module: {        //指定要加载的规则        rules: [            {                //test 指定规则生效的文件,以下匹配以 ts 结尾的文件                test:/\.ts$/,                //要使用的loader,用 ts-loader 处理以 ts 结尾的文件                use: [                    //配置babel                    {                        //指定加载器                        loader:'babel-loader',                        //设置 babel                        options: {                            //设置预定义的环境                            presets:[                                //指定环境插件                                '@babel/preset-env',                                //配置信息                                {                                    //要兼容的目标浏览器                                    targets:{                                        "chrome":88                                    },                                    //指定corejs版本                                    "corejs":"3",                                    //使用corejs的方式 usage表示按需加载                                    "useBuiltIns":"usage",                                }                            ]                        }                    },                    'ts-loader'                ],                //要排除的文件                exclude: /node_modules/            }        ]    },    ......};

加载器的顺序是从后往前执行,所以先用 ts-loader 将 ts 转为 js,然后使用 babel-loader 将新版本的 js 转换为 旧版本的 js

模块问题

新建 m1.ts 暴露一个 hi

如何使用webpack打包ts代码

index.ts 中引入 m1 并打印 hi

如何使用webpack打包ts代码

执行 npm run build 会报错:

如何使用webpack打包ts代码

这时我们需要修改 webpack.config.js 中配置,增加

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

Resolve 配置 webpack 如何寻找模块对应的文件,在导入语句没带文件后缀时,webpack 会自动带上后缀去尝试访问文件是否存在。resolve.extensions 用于配置在尝试过程中用到的后缀列表

以上就是“如何使用webpack打包ts代码”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯