webpack实现打包ts文件

1.说明

初步学习ts,根据b站的课程来学习的,此处是对webpack打包ts所做的笔记和总结;课程源地址:https://www.bilibili.com/video/BV1Xy4y1v7S2?p=1

2.开始

webpack打包ts文件,基本上分为初始化package文件,安装相关依赖,以及安装一些插件以此实现webpack对ts文件的打包!
由于环境不同,安装的依赖版本也不同,过程中可能会出现很多问题,在这里先展示一下自己本地的环境。

node -v
v14.19.0
npm -v
6.14.6
"webpack": "^5.75.0",
"webpack-cli": "^5.0.1",
"webpack-dev-server": "^3.11.0"
2.1 创建文件

在初始化好的package文件中,创建一个src的目录,在src中,创建index.ts文件,用于测试打包信息。目录如图:
在这里插入图片描述

2.2 初始化package文件
npm init -y
2.3 安装依赖
npm i -D webpack webpack-cli typescript ts-loader

依赖作用:ts-loader 用于webpack的加载器,将ts编译成js
依赖的版本如下:

"ts-loader": "^9.4.2",
"typescript": "^4.9.4",
"webpack": "^5.75.0",
"webpack-cli": "^5.0.1",
"webpack-dev-server": "^3.11.0"
2.4 webpack.config.js 文件配置

webpack打包过程中需要对其相关项进行配置,创建一个webpack.config.js 文件,配置内容如下:

// 引入一个包
const path = require('path')
module.exports = {
    // 指定入口文件
    entry:'./src/index.ts',
    // 指定打包文件所在的目录
    output:{
        // 利用path可完整拼出打包文件的目录
        path:path.resolve(__dirname,'dist'),
        // 打包后的文件
        filename:'bundle.js',
    },
    module: {
        // 指定要加载的规则
        rules: [
            {
                test:/\.ts$/, // test指定的是规则生效的文件
                use:'ts-loader',
                // 排除要处理的文件
                exclude: /node-modules/
            }
        ],

    },
    // 模块配置:让webpack了解哪些方法可以被当作模块引入
    resolve: {
        extensions:['.ts','.js']
    }
}

webpack文件配置好后, 记得配置tsconfig.json文件,是ts编译器的编译文件,否则无法运行。tsconfig.json文件的配置具体说明后续在进行记录,此处的tsconfig.json文件的配置内容如下:

// ts文件的配置
{
    "compilerOptions": {
      "module": "ES2015",
      "target": "ES2015",
      "strict": true
    }
}
2.5 package文件设置

package.json文件设置打包命令如下:

"scripts": {
    "build": "webpack"
  },
2.6 npm run build

打包完成后,可以看到目录中多了一个dist文件,此处就是打包之后的文件;在index.ts文件中随便打印一个内容,运行命令之后即可看到效果。
打包后生成的目录

2.7 安装html-webpack-plugin插件

html-webpack-plugin是webpack的一个插件,配置后,可以在打包后生成的dist文件中生成一个html,同时把构建好的bundle.js文件引入到生成的html文件中。
1) 安装插件

npm i -D html-webpack-plugin@5.5.0

2)webpack.config.js配置

const HTMLWebpackPlugin = require('html-webpack-plugin')
// 配置html-webpack插件
plugins: [
    new HTMLWebpackPlugin({
        title:'',// 设置生成html的title
        // template:'./src/index.html', // 引入模板
    })
]

打包后效果

2.8 安装clean-webpack-plugin插件

当文件更新后重新打包,为了避免打包后的文件重复,可以安装此插件;主要是在构建之前,清空dist文件夹,保证文件夹的文件都是最新的,不留历史文件。

npm i -D clean-webpack-plugin@4.0.0
// webpack.config.js
plugins: [
	new CleanWebpackPlugin()
]
2.9 babel

babel主要是把旧语法换成新语法的,用来解决浏览器的兼容问题。

npm i -D @babel/core @babel/preset-env babel-loader core-js
use:[
                    // 配置babel
                    {
                        // 指定加载器
                        loader:'babel-loader',
                        // babel 设置
                        options: {
                            // 设置预定义的环境
                            presets: [
                                //  注意括号使用
                                [
                                    //  指定环境的插件
                                "@babel/preset-env",
                                // 配置信息
                                {
                                    // 要兼容的目标浏览器
                                    targets: {
                                        "chrome":"60",
                                        "edge":'17'
                                    },
                                    // 指定corejs的版本
                                    "corejs":"3",
                                    // 使用corejs的方式 表示按需加载
                                    "useBuiltIns":'usage'
                                }
                                ]
                            ]
                        }
                    }
                ]

3. webpack.config.js 完整文件

// 引入一个包
const path = require('path')
// 引入html
const HTMLWebpackPlugin = require('html-webpack-plugin')
const {CleanWebpackPlugin} = require('clean-webpack-plugin')
// 配置信息
module.exports = {
    // 指定入口文件
    entry:'./src/index.ts',

    // 指定打包文件所在的目录
    output:{
        // 利用path可完整拼出打包文件的目录
        path:path.resolve(__dirname,'dist'),
        // 打包后的文件
        filename:'bundle.js',
        // 指定webpack打包时使用的模块

        // 配置打包环境
        environment: {
            arrowFunction: false , // 打包不使用箭头函数
        }
    },
    module:{
        // 指定要加载的规则
        rules:[
            {
                // 用ts-loader处理以ts结尾的文件
                test:/\.ts$/, // test指定的是规则生效的文件
                use:[
                    // 配置babel
                    {
                        // 指定加载器
                        loader:'babel-loader',
                        // babel 设置
                        options: {
                            // 设置预定义的环境
                            presets: [
                                //  注意括号使用
                                [
                                    //  指定环境的插件
                                "@babel/preset-env",
                                // 配置信息
                                {
                                    // 要兼容的目标浏览器
                                    targets: {
                                        "chrome":"60",
                                        "edge":'17'
                                    },
                                    // 指定corejs的版本
                                    "corejs":"3",
                                    // 使用corejs的方式 表示按需加载
                                    "useBuiltIns":'usage'
                                }
                                ]
                            ]
                        }
                    },
                    'ts-loader'
                ],
                // 排除要处理的文件
                exclude: /node-modules/ 
            }
        ]
    },
    // 配置html-webpack插件
    plugins: [
        new HTMLWebpackPlugin({
            title:'',// 设置生成html的title
            // template:'./src/index.html', // 引入模板
        }), // 自动生成html文件,生成相关资源
        new CleanWebpackPlugin()
    ],
    // 模块配置:让webpack了解哪些方法可以被当作模块引入
    resolve: {
        extensions:['.ts','.js']
    }
}

此处可以注意,module中的rules的use执行顺序为:从下往上执行,ts-loader放在最下方,是先把ts转换为js,babel-loader将js转换为旧版本的js语法。

4. 结尾

至此打包的基本过程完毕,在整个过程中最容易出现问题的地方是插件以及依赖的版本问题。
菜鸟一枚,若有问题,请及时告知!

要使用webpack打包typescript文件,您需要安装以下依赖项: 1. `webpack`: 用于打包应用程序。 2. `webpack-cli`: 用于在命令行上运行webpack。 3. `ts-loader`: 用于加载typescript文件并将其转换为JavaScript。 4. `typescript`: 用于编写typescript代码。 安装这些依赖项后,您可以创建一个webpack配置文件,在此文件中指定您的入口点和输出文件。以下是一个例子: ```javascript // webpack.config.js module.exports = { entry: './src/index.ts', output: { filename: 'bundle.js', path: __dirname + '/dist' }, resolve: { extensions: ['.ts', '.js'] }, module: { rules: [ { test: /\.ts$/, loader: 'ts-loader', exclude: /node_modules/ } ] } }; ``` 在此配置中,我们指定了`entry`和`output`属性,以及`resolve`和`module`属性。`entry`指定应用程序的入口点,`output`指定打包后的文件名和输出目录。`resolve`属性用于指定要解析的文件扩展名。在这种情况下,我们使用`.ts`和`.js`扩展名。`module`属性使用`rules`属性指定将要使用的加载器。在这种情况下,我们使用`ts-loader`来加载和转换typescript文件。 现在,您可以在命令行上运行webpack,它将使用您的配置文件打包您的应用程序。例如: ``` webpack --config webpack.config.js ``` 这将打包您的应用程序,并将输出文件保存在`dist/bundle.js`中。 注意:在运行webpack之前,您需要确保您的typescript代码是有效的,并且没有任何错误。您可以使用`tsc`命令来编译typescript代码,并查找任何错误。例如: ``` tsc src/index.ts ``` 这将编译`src/index.ts`文件,并生成一个JavaScript文件。如果有任何错误,它们将显示在命令行上。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值