使用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来启动开发服务器
相关推荐
io无心13 小时前
node_modules\deasync: Command failed.
typescript·yarn
记得早睡~1 天前
leetcode51-N皇后
javascript·算法·leetcode·typescript
sen_shan1 天前
Vue3+Vite+TypeScript+Element Plus开发-04.静态菜单设计
前端·javascript·typescript·vue3·element·element plus·vue 动态菜单
阿珊和她的猫1 天前
Webpack Dev Server的安装与配置:解决跨域问题
vue.js·webpack
巴巴博一2 天前
keep-alive缓存
前端·javascript·vue.js·缓存·typescript
Hamm2 天前
用一种全新的方式来实现i18n,和魔法字符串彻底说拜拜
前端·vue.js·typescript
南通DXZ2 天前
Win7下安装高版本node.js 16.3.0 以及webpack插件的构建
前端·webpack·node.js
念九_ysl3 天前
基数排序算法解析与TypeScript实现
前端·算法·typescript·排序算法
安分小尧3 天前
[特殊字符] 使用 Handsontable 构建一个支持 Excel 公式计算的动态表格
前端·javascript·react.js·typescript·excel
qp3 天前
21.OpenCV获取图像轮廓信息
javascript·opencv·webpack