使用webpack + TS + Babel

1.初始化项目
复制代码
npm i -y
2.下载依赖
复制代码
npm i -D webpack webpack-cli webpack-dev-server typescript ts-loader clean-webpack-plugin
2.1依赖包介绍
复制代码
webpack					//构建工具webpack
webpack-cli				//webpack的命令行工具
webpack-dev-server      //webpack的开发服务器
typescript 			    //ts编译器
ts-loader  			 	//ts加载器,用于在webpack中编译ts文件
html-webpack-plugin 	//webpack中html插件,用来自动创建html文件
clean-webpack-plugin  	//webpack中的清除插件,每次构建都会先清除目录
2.2Babel
2.2.1介绍
复制代码
开发中还经常需要结合babel来对代码进行转换以使其可以兼容到更多的浏览器
2.2.2下载依赖
复制代码
npm i -D @babel/core @babel/preset-env babel-loader core-js
2.2.3依赖包介绍
复制代码
@babel/core        //babel的核心工具
@babel/preset-env  //babel的预定义环境
@babel-loader      //babel在webpack中的加载器
core-js            //core-js用来使老版本的浏览器支持新版ES语法
3.创建webpack.config.js文件
javascript 复制代码
// 引入一个包
const path = require('path')
// 引入 html 插件
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',
    // 配置打包环境
    environment: {
      arrowFunction: false // webpack打包不使用箭头函数
    }
  },
  // 指定webpack打包时使用模块
  module: {
    // 指定加载规则
    rules: [
      {
        // test指定的规则生效的文件
        test: /\.ts$/,
        // 使用的loader
        use: [
          {
            //指定加载器
            loader: 'babel-loader',
            // 设置
            options: {
              presets: [
                // 预定义环境
                [
                  // 环境插件
                  '@babel/preset-env',
                  // 配置信息
                  {
                    // 兼容浏览器版本
                    targets: {
                      chrome: '58',
                      ie: '11'
                    },
                    // corejs版本
                    corejs: '3',
                    // 使用corejs的方式
                    useBuiltIns: 'usage' //按需加载
                  }
                ]
              ]
            }
          },
          'ts-loader'
        ],
        exclude: /node_modules/
      }
    ]
  },

  // 配置webpack插件
  plugins: [
    new htmlWebpackPlugin({
      // title: 'TS测试', //自定义title名
      template: './src/index.html' //根据模版生成
    }),
    new CleanWebpackPlugin()
  ],
  resolve: {
    extensions: ['.ts', '.js']
  }
}
3.1模版页例子(./src/index.html)
html 复制代码
<!doctype html>
<html>

<head>
  <meta charset="utf-8">
  <title>模板页</title>
  <meta name="viewport" content="width=device-width,initial-scale=1">
</head>

<body>
  <div id="c1">123</div>
</body>

</html>
4.创建tsconfig.json配置文件``
html 复制代码
{
  "compilerOptions": {
    "module": "ES2015",
    "target": "ES2015",
    "strict": true
  }
}
5.修改package.json添加如下配置
html 复制代码
{
  ...略...
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "webpack",
    "start": "webpack serve --open chrome.exe"  //启动webpack服务
  },
  ...略...
}
6.使用
html 复制代码
在src下创建ts文件,并在并命令行执行npm run build对代码进行编译,或者执行npm start来启动开发服务器
相关推荐
AAA不会前端开发1 天前
TypeScript核心类型系统完全指南
前端·typescript
sen_shan1 天前
Vue3+Vite+TypeScript+Element Plus开发-27.表格页码自定义
前端·javascript·typescript
烛阴1 天前
为什么 `Promise.then` 总比 `setTimeout(..., 0)` 快?微任务的秘密
前端·javascript·typescript
嫂子的姐夫3 天前
21-webpack介绍
前端·爬虫·webpack·node.js
漂流瓶jz3 天前
Webpack中各种devtool配置的含义与SourceMap生成逻辑
前端·javascript·webpack
wuk9983 天前
Webpack技术深度解析:模块打包与性能优化
前端·webpack·性能优化
披萨心肠3 天前
Typescript数组与元组类型
typescript·编程语言
一点七加一3 天前
Harmony鸿蒙开发0基础入门到精通Day11--TypeScript篇
前端·javascript·typescript
BLOOM3 天前
一款注解驱动的axios工具
javascript·typescript
冴羽4 天前
今日苹果 App Store 前端源码泄露,赶紧 fork 一份看看
前端·javascript·typescript