使用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来启动开发服务器
相关推荐
孟无岐5 小时前
【Laya】Byte 二进制数据处理
网络·typescript·游戏引擎·游戏程序·laya
孟无岐8 小时前
【Laya】ClassUtils 类反射工具
typescript·游戏引擎·游戏程序·laya
We་ct12 小时前
LeetCode 380. O(1) 时间插入、删除和获取随机元素 题解
前端·算法·leetcode·typescript
孟无岐14 小时前
【Laya】Ease 缓动函数
typescript·游戏引擎·游戏程序·laya
漂流瓶jz14 小时前
Polyfill方式解决前端兼容性问题:core-js包结构与各种配置策略
前端·javascript·webpack·ecmascript·babel·polyfill·core-js
We་ct14 小时前
LeetCode 238. 除了自身以外数组的乘积|最优解详解(O(n)时间+O(1)空间)
前端·算法·leetcode·typescript
踢球的打工仔15 小时前
typescript-类的静态属性和静态方法
前端·javascript·typescript
奔跑的web.1 天前
TypeScript Enum 类型入门:从基础到实战
前端·javascript·typescript
wuhen_n1 天前
初识TypeScript
javascript·typescript
踢球的打工仔1 天前
typescript-类
前端·javascript·typescript