TypeScript之使用webpack打包

简介: TypeScript之使用webpack打包

一、前言

在上一章TypeScript之编译中,我们介绍了怎么去配置TypeScript编译文件,然后使用 tsc的方式去把 TypeScript文件转换为 JavaScript文件

但是在实际的项目开发中,我们不会使用这种方式去编译,而是使用专门的开发工具,本文主要讲解通过打包工具webpack去打包ts文件

二、使用webpack打包ts文件详细过程

初始化配置

新建一个day03文件夹, 然后在终端输入命令 npm init -y 生成package.json配置文件,具体如图所示:

网络异常,图片无法展示
|

接下来我们输入以下命令安装一下webpack和webpack-cli、typescript、ts-loader

npm i -D  webpack webpack-cli typescript ts-loader
复制代码
  • webpack: webpack的核心包
  • webpack-cli:webpack命令行工具
  • typescript: TypeScript核心包
  • ts-loader:整合TypeScript和webpack 安装成功之后, 相应的在我们的package.json文件中出现对应的依赖,同时在我们的根目录day03下会出现一个node_modules目录

网络异常,图片无法展示
|
在我们的根目录下新建webpack的配置文件 webpack.config.js

修改我们的 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打包时要使用的模块
    moudle: {
        // 指定要加载的规则
        rules: [
            {
                // test指定的是规则生效的文件, 以ts结尾的文件
                test: /\.ts$/,
                // 要使用的loader
                use: 'ts-loader',
                // 要排除的文件
                exclude: /node_modules/
            }
        ]
    }
}
复制代码

修改我们的package.json,添加打包命令build和运行环境 --mode

网络异常,图片无法展示
|
新增tsconfig.json文件, 并简单设置一下代码ES6格式和严格检查模式

{
    "compilerOptions": {
        "module": "ES2015",
        "target": "ES2015",
        "strict": true
    }
}
复制代码

终端执行命令npm run build 出现如图所示情况则成功

网络异常,图片无法展示
|

三、webpack相关知识

webpack插件(自动生成html)

安装插件命令如下

npm i -D html-webpack-plugin
复制代码

安装好插件后,在webpack.config.js文件中对其进行配置并重新build打包, 可以看到, 在dist文件夹下除了bundle.js文件之外还生成了一个index.html文件

网络异常,图片无法展示
|

自定义插件内容

我们打开生成好的index.html文件之后会发现js已经被导入了,但是我们的title是默认的 Webpack App 我们如果想要更改这个要怎么做呢

打开我们的webpack.config.js文件,在配置插件的地方进行个性化修改后重新打包编译

网络异常,图片无法展示
|

这个插件还可以指定生成的index.html模板, 首先我们在src目录下生成index.html自定义模板,然后在webpack.config.js文件中对插件进行个性化配置, 最后对我们的项目进行build打包,具体实现如下图所示

网络异常,图片无法展示
|

webpack插件(webpack开发服务器)

这个插件会自动对我们的代码进行重新编译

插件安装命令如下

npm i -D webpack-dev-server
复制代码

安装好了之后,我们需要在package.json中新增start启动命令

网络异常,图片无法展示
|

安装插件(清除打包目录)

这个插件的作用是在你build打包项目的时候, 会先去清空你的打包目录, 也就是我们的dist目录, 再去打包,避免有旧打包文件影响新的打包文件

请输入以下命令安装插件

npm i -D clean-webpack-plugin
复制代码

四、打包兼容性

因为在实际开发中,我们会碰到不同的浏览器, 为了让我们的代码能够在所有浏览器中都流畅的运行,所以我们要安装以下几个插件,来提高我们代码的兼容性

npm i -D @babel/core @babel/preset-env babel-loader core-js
复制代码

安装成功之后, 我们更改我们的webpack.config.js文件, 配置babel, 指定加载器, 设置兼容的目标浏览器等, 修改后的webpack.config.js文件内容如下

// 引入一个包
// 拼接路径
const path = require('path')
// 引入html-webpack-plugin
const htmlWebpackPlugin = require('html-webpack-plugin')
// 引入clean插件
const { CleanWebpackPlugin } = require('clean-webpack-plugin')
// webpack中所有的配置信息都应该写在module.exports中
module.exports = {
    // 指定入口文件
    entry: "./src/index.ts",
    // 指定打包文件所在的目录
    output: {
        // 指定打包文件的目录
        path: path.resolve(__dirname, 'dist'),
        // 打包后文件的名字
        filename: "bundle.js",
        // 告诉webpack不使用箭头函数
        environment:{
            arrowFunction: false
        }
    },
    // 指定webpack打包时要使用的模块
    module: {
        // 指定要加载的规则
        rules: [
            {
                // test指定的是规则生效的文件, 以ts结尾的文件
                test: /\.ts$/,
                // 要使用的loader
                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/
            }
        ]
    },
    mode: 'development',
    // 配置 webpack插件
    plugins: [
        new CleanWebpackPlugin(),
        new htmlWebpackPlugin(
            {
                // 'title': "宁轩个人博客"
                template: "./src/index.html"
            }
        ),
    ],
    // 用来设置引用模块
    resolve: {
        extensions: ['.ts', '.js']
    }
}
复制代码

五、遇到的报错

module拼写错误

如图, 手敲快了 module敲成了moudle会报下图的错误

网络异常,图片无法展示
|

未指定环境

如图, 若未在package.json中指定当前环境, 则会报如下错误

网络异常,图片无法展示
|

六、总结

至此关于Webpack打包TypeScript文件就结束了, 有问题欢迎评论区留言讨论



目录
相关文章
|
4月前
|
JavaScript 前端开发
webpack成长指北第9章---webpack如何对icon字体进行打包
webpack成长指北第9章---webpack如何对icon字体进行打包
101 1
|
9天前
|
JavaScript
webpack打包TS
webpack打包TS
|
3月前
|
缓存 JavaScript 前端开发
探讨如何通过一系列优化策略来提升TypeScript与Webpack的构建性能。
【6月更文挑战第11天】本文探讨了优化TypeScript与Webpack构建性能的策略。理解Webpack的解析、构建和生成阶段是关键。优化包括:调整tsconfig.json(如关闭不必要的类型检查)和webpack.config.js选项,启用Webpack缓存,实现增量构建,代码拆分和懒加载。通过这些方法,可以提升构建速度,提高开发效率。
69 0
|
5天前
webpack 打包多页面应用
webpack 打包多页面应用
|
18天前
|
前端开发 开发者
在前端开发中,webpack 作为一个强大的模块打包工具,为我们提供了丰富的功能和扩展性
【9月更文挑战第1天】在前端开发中,Webpack 作为强大的模块打包工具,提供了丰富的功能和扩展性。本文重点介绍 DefinePlugin 插件,详细探讨其原理、功能及实际应用。DefinePlugin 可在编译过程中动态定义全局变量,适用于环境变量配置、动态加载资源、接口地址配置等场景,有助于提升代码质量和开发效率。通过具体配置示例和注意事项,帮助开发者更好地利用此插件优化项目。
44 13
|
21天前
|
JSON JavaScript IDE
[译] 使用 microbundle 打包 TypeScript 组件库
[译] 使用 microbundle 打包 TypeScript 组件库
|
24天前
|
缓存 前端开发 JavaScript
Webpack 模块解析:打包原理、构造形式、扣代码补参数和全局导出
Webpack 模块解析:打包原理、构造形式、扣代码补参数和全局导出
22 1
|
19天前
|
前端开发 JavaScript 开发者
Angular与Webpack协同优化:打造生产级别的打包配置——详解从基础设置到高级代码拆分和插件使用
【8月更文挑战第31天】在现代前端开发中,优化应用性能和加载时间至关重要,尤其是对于使用Angular框架的项目。本文通过代码示例详细展示了如何配置Webpack,以实现生产级别的打包优化。从基础配置到生产环境设置、代码拆分,再到使用加载器与插件,每个步骤都旨在提升应用效率,确保快速加载和稳定运行。通过这些配置,开发者能更好地控制资源打包,充分发挥Webpack的强大功能。
26 0
|
1月前
|
JavaScript 前端开发 CDN
webpack打包发布~
【8月更文挑战第7天】
33 1
|
1月前
|
前端开发 开发者
在前端开发中,webpack 作为模块打包工具,其 DefinePlugin 插件可在编译时动态定义全局变量,支持环境变量定义、配置参数动态化及条件编译等功能。
在前端开发中,webpack 作为模块打包工具,其 DefinePlugin 插件可在编译时动态定义全局变量,支持环境变量定义、配置参数动态化及条件编译等功能。本文阐述 DefinePlugin 的原理、用法及案例,包括安装配置、具体示例(如动态加载资源、配置接口地址)和注意事项,帮助开发者更好地利用此插件优化项目。
42 0