使用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来启动开发服务器
相关推荐
摸鱼仙人~7 小时前
如何创建基于 TypeScript 的 React 项目
javascript·react.js·typescript
一生躺平的仔1 天前
TypeScript入门(九)装饰器:TypeScript的"元编程超能力"
typescript
MiyueFE1 天前
让我害怕的 TypeScript 类型 — — 直到我学会了这 3 条规则
前端·typescript
前端拿破轮1 天前
😭😭😭看到这个快乐数10s,我就知道快乐不属于我了🤪
算法·leetcode·typescript
前端_ID林1 天前
每个开发人员都应该知道的 TypeScript 技巧
typescript
奋飛1 天前
TypeScript系列:第六篇 - 编写高质量的TS类型
javascript·typescript·ts·declare·.d.ts
拾光拾趣录1 天前
Webpack 打包中的 Hash 生成机制
前端·webpack·前端工程化
abigale0311 天前
webpack+vite前端构建工具 - 8 代码分割
前端·webpack·node.js
abigale0311 天前
webpack+vite前端构建工具 - 9 webpack技巧性配置
前端·webpack·node.js
BillKu11 天前
Vue3 + TypeScript + xlsx 导入excel文件追踪数据流转详细记录(从原文件到目标数据)
前端·javascript·typescript