丁鹿学堂前端培训:配置完整的typescript + webpack教程

120 阅读2分钟

我们分了三部分,循序渐进的配置webpack,这一篇是最后一篇,完整的配置一个可用于生产的webpack项目。

我们配置webpack,要兼容ie,就需要babel去帮助我们完成这部分繁琐的工作。

为了兼容老的ie浏览器,我们需要把我们的代码打包成兼容性的代码。

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

babel/core 就是兼容性编译的核心插件。

babel-loader 是把babel 和webpack结合的插件

配置wbepack.config.js

用ts-loader去处理 ts转为js,用babel-loader 解决兼容性问题,他们是有顺序的。use数组的后面先执行

如果要配置复杂的use项,可以用对象的形式去配置

use:[
                    {
                        loader: 'babel-loader',
                        options: {
                          presets: [
                            // 开始
                            [
                              '@babel/preset-env',
                              {
                                useBuiltIns: 'usage',
                                corejs: {
 
                                  version: 3,
                                },
 
                                targets: {
                                  chrome: '60',
                                  firefox: '60',
                                  ie: '9',
                                  safari: '10',
                                  edge: '17',
                                },
                              },
                            ],
                            // 结束
                          ],
                        },
                      },
 
                    "ts-loader"
                ]

要兼容ie,不能使用箭头函数,还要在webpack的配置项output里加一个不使用箭头函数

output:{
        // 指定打包文件的目录
        path:path.resolve(__dirname,'dist'),
        // 打包的文件名
        filename:'bundle.js',
        // 配置不使用箭头函数
        environment:{
            arrowFunction:false
        }
    },

完整的webpak配置

// 引入path包,作用是拼接路径
const path = require('path')
// 引入html插件
const HTMLPlugin = require('html-webpack-plugin')
// 引入清除修改之前文件的插件
const { CleanWebpackPlugin } = require('clean-webpack-plugin')
// webpack的所有配置信息都在这里
module.exports = {
    // 指定入口文件
    entry: './src/index.ts',
    // 指定打包后文件的目录
    output: {
        // 指定打包文件的目录
        path: path.resolve(__dirname, 'dist'),
        // 打包的文件名
        filename: 'bundle.js',
        // 配置不使用箭头函数
        environment: {
            arrowFunction: false
        }
    },
    // webpack 打包时要依赖的一些模块
    module: {
        // 指定加载规则
        rules: [
            {
                // test指定规则生效的文件
                test: /.ts$/, // ts结尾
                use: [
                    {
                        loader: 'babel-loader',
                        options: {
                            presets: [
                                // 开始
                                [
                                    '@babel/preset-env',
                                    {
                                        useBuiltIns: 'usage',
                                        corejs: {
                                            version: 3,
                                        },
                                        targets: {
                                            chrome: '60',
                                            firefox: '60',
                                            ie: '9',
                                            safari: '10',
                                            edge: '17',
                                        },
                                    },
                                ],
                                // 结束
                            ],
                        },
                    },
                    "ts-loader"
                ], // 用ts-loader去处理 ts转为js,用babel-loader 解决兼容性问题,他们是有顺序的
                exclude: /mode-modules/ // 排除文件,这里的不去编译
            }
        ]
    },
    // 配置webpack的插件
    plugins: [
        new CleanWebpackPlugin(),
        new HTMLPlugin({
            template: "./src/index.html"
        })
    ],
    // 配置引用模块,ts  和 js结尾的都可以作为引用模块来使用
    resolve: {
        extensions: ['.ts', '.js']
    }
}

以上就是完整的ts+webpack的配置了,赶快试一下,愉快的进行开发吧!