美文网首页
使用webpack打包ts代码

使用webpack打包ts代码

作者: 浅浅_2d5a | 来源:发表于2022-07-26 16:13 被阅读0次

1、新建一个文件夹,npm init -y 生成package.json 文件
2、npm i -D webpack webpack-cli typescript ts-loader 安装webpack和ts需要的包
webpack 从 4.0 版本开始,在安装时,就必须要安装webpack 和 webpack-cli 这2个东西。
webpack 是打包代码时依赖的核心内容,而 webpack-cli 是一个用来在命令行中运行 webpack 的工具。
typescript 包是将ts语言转化为js的,是ts的解析器
ts-loader 是webpack打包编译typescript的工具,就是需要这个包,typescript才能在webpack中使用
3、增加webpack.config.js文件,webpack的配置文件

const path = require('path') // node包里面的path模块,主要是为了帮我们拼接路径

// webpack中所有的配置信息都应该写在module.exports中
module.exports = {
    mode: 'development',
    // 指定入口文件
    entry: './src/index.ts',
    // 指定打包文件输出目录
    output: {
        path: path.resolve(__dirname,'dist'), //'./dist' 使用path拼接完整路径
        // 打包后文件的名字
        filename: 'bundle.js', // 随意命名
    },
    // 指定webpack打包时要使用的模块,哪些loader
    module: {
        // 指定要加载的规则
        rules: [
            {
                // test指定的是对那些文件生效
                test:/\.ts$/, // 通过正则表达式匹配文件的名字
                loader: 'ts-loader', // 通过ts-loader处理以ts结尾的文件
                exclude: /node_modules/, // 指定要排除的文件
                options: {
                    configFile: path.resolve(__dirname, './ts.config.json')
             }
            }
        ]
    }
}

4、新建src文件夹,里面建立一个ts文件,作为入口文件
5、新增ts.config.json,对ts文件进行编译的配置

{
    "compilerOptions": {
        "module": "ES2015",
        "target": "ES2015",
        "strict": true,
        "removeComments":true  // 删除ts文件中的注释,不算打包生成的注释
    },
    "files":[
        "./src/index.ts"
    ]
}

6、package.json文件中script中增加一条
"build": "webpack" // 执行npm run build 能够打包
此时npm run build 就能生成由index.ts的编译后的bundle.js文件
7、npm i -D html-webpack-plugin
安装html-webpack-plugin,作用:动态生成html文件,并且把打包后的js文件绑定进去
在webpack.config.js文件对html-webpack-plugin进行配置,

const HTMLWebpackPlugin = require('html-webpack-plugin')
// 配置webpack插件
plugins:[
    new HTMLWebpackPlugin({  //如果不要求,直接new HTMLWebpackPlugin() ,如果需要设置标题,传入配置对象
        title:'我想要个不一样的title'
    })
]

此时,执行npm run build dist中会生成 bundle.js文件,和绑定了bundle.js文件的index.html文件
另外,可以指定一个html文件作为模板,生成输出的html

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

8、npm i -D webpack-dev-server
安装webpack-dev-server, 作用:在dev环境启动server服务,并且该服务器在工程内部,与webpack相关联,webpack运行后,服务会自动刷新
9、在package.json中script中设置
"start": "webpack serve --open"
执行npm run start 就会启动webpack-dev-server服务


image.png

页面是实时更新的
10、npm i -D clean-webpack-plugin
安装clean-webpack-plugin,作用:每次打包之前把dist文件夹清空
更改package.json文件

const {CleanWebpackPlugin} = require('clean-webpack-plugin')
plugins:[
    new HTMLWebpackPlugin({
        template:'./src/index.html'
    }),
    new CleanWebpackPlugin()
]

11、设置可以引入的模块类型,

    // 配置webpack插件
    plugins:[
        new HTMLWebpackPlugin({
            template:'./src/index.html'
        }),
        new CleanWebpackPlugin()
    ],

    // 用来设置哪些可以作为模块引入
    resolve:{
        extensions:['.ts','.js'] //以ts、js为后缀的文件可以作为模块引入,打包不报错
    }

12、引入babel 为了兼容更多浏览器 下载+配置
npm i -D @babel/core @babel/preset-env babel-loader core-js
@babel/core babel的核心工具
@babel/preset-env 根据配置的目标环境自动采用需要的babel插件
babel-loader 将babel和webpak进行结合的以来
core-js 让老版本浏览器能支持新的proxy等的方法,补丁。需要按需安装
webpack.config.json 中配置,针对ts后缀文件

const path = require('path') // node包里面的path模块,主要是为了帮我们拼接路径

const HTMLWebpackPlugin = require('html-webpack-plugin')
const {CleanWebpackPlugin} = require('clean-webpack-plugin')

// webpack中所有的配置信息都应该写在module.exports中
module.exports = {
    mode: 'development',
    // 指定入口文件
    entry: './src/index.ts',
    // 指定打包文件输出目录
    output: {
        path: path.resolve(__dirname,'dist'), //'./dist' 使用path拼接完整路径
        // 打包后文件的名字
        filename: 'bundle.js', // 随意命名
    },
    // 指定webpack打包时要使用的模块,哪些loader
    module: {
        // 指定要加载的规则
        rules: [
            {
                // test指定的是对那些文件生效
                test:/\.ts$/, // 通过正则表达式匹配文件的名字
                use: [ // 加载器的执行顺序是从后往前,要先执行ts-loader,在执行babel
                    // babel 需要一些配置
                    {
                        // 指定加载器
                        loader: 'babel-loader',
                        // 设置babel
                        options: {
                            // 设置预定义环境
                            presets: [
                                [
                                    // 指定环境的插件
                                    "@babel/preset-env",
                                    // 配置信息
                                    {
                                        // 要兼容的目标浏览器
                                        targets:{
                                            "chrome": "58",
                                            "ie": "11" // ie11不支持箭头函数

                                        },
                                        // 设置corejs的版本,下载的版本几写几
                                        "corejs":3,
                                        // 使用corejs的方式, "usage"为按需加载
                                        "useBuiltIns": "usage"
                                    }
                                ]
                            ]
                        }
                    },
                    {
                        loader: 'ts-loader', // 通过ts-loader处理以ts结尾的文件
                        options: {
                            configFile: path.resolve(__dirname, './ts.config.json')
                        }
                            
                    }
                ],
                exclude: /node_modules/, // 指定要排除的文件
            }
        ]
    },
    // 配置webpack插件
    plugins:[
        new HTMLWebpackPlugin({
            template:'./src/index.html'
        }),
        new CleanWebpackPlugin()
    ],
    // 用来设置哪些可以作为模块引入
    resolve:{
        extensions:['.ts','.js'] //以ts、js为后缀的文件可以作为模块引入,打包不报错
    }
}

上述webpack.config.js中已经配置了 ie11兼容,但是还是报错箭头函数错误


image.png

这里的箭头函数不是我们写的ts,是webpack打包过程生成的js。需要设置
output中

        // 告诉webpack不使用箭头函数
        environment: {
            arrowFunction: false
        },

以上基本完成了配置了ts webpack babel的配置

相关文章

  • 使用webpack打包ts代码

    1、新建一个文件夹,npm init -y 生成package.json 文件2、npm i -D webpack...

  • 使用webpack打包ts

    初始化package.json npm init -y cnpm i -D webpack webpack-cli...

  • webpack打包TS

    1. webpack打包 先生成package.json文件npm init 下载依赖包npm i -D we...

  • 配置 webpack 中 sourcemap 减小 vue re

    webpack 中 sourcemap 的作用与使用场景分析 我们使用 react vue 的脚手架打包代码,打包...

  • 使用 Parcel 打包 TS 代码

    Parcel 是和webpack类似的打包工具,但是不需要做额外过多的配置,用起来比较简单。 地址 https:/...

  • 高级指引

    无障碍 掠过~靠后 代码分割 打包: 通常使用webpack、Rollup、Browserify等构建...

  • 前端打包:tsup

    使用 tsup 的目的是为了快速的打包 TS 项目,使用 tsup 基于 esbuild 进行构建,打包 ts 文...

  • React-TypeScript

    使用TypeScript参考资料 使用教程 由于代码都是经过webpack打包的,所以直接使用src="./xxx...

  • 2018-07-24 回到起点--在React中使用Animat

    正常使用webpack打包的React项目,在项目打包成bundle的时候会对代码丑化(uglyfy),因此组件的...

  • webpack 打包传统页面 示例

    起因 尝试将使用 webpack 进行打包传统页面、jquery。 解决方案 使用 cdn 方式 示例代码 web...

网友评论

      本文标题:使用webpack打包ts代码

      本文链接:https://www.haomeiwen.com/subject/iyggirtx.html