使用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来启动开发服务器
相关推荐
parade岁月5 小时前
TypeScript 全局类型声明文件规范性分析与归纳
前端·vue.js·typescript
胖方Hale8 小时前
11. Typescript 泛型
前端·typescript
浪裡遊12 小时前
TypeScript之基础知识
前端·javascript·typescript
孟陬12 小时前
TypeScript 系列:satisfies 的实用之处
typescript
秋天的一阵风13 小时前
Webpack 插件开发:为 Vue.js 应用实现图片预加载
前端·vue.js·webpack
火星思想13 小时前
Webpack热更新后模块生效的完整过程
前端·webpack·架构
Zhillery13 小时前
Tauri快速入门1 - 搭设开发环境
typescript·前端框架·react·tauri
浪裡遊13 小时前
TypeScript中的函数类型定义与类型约束
javascript·ubuntu·typescript
涛哥码咖1 天前
Rule.resourceQuery(通过路径参数指定loader匹配规则)
前端·webpack
BillKu1 天前
Vue3 + TypeScript,使用provide提供只读的响应式数据的详细分析与解决方法
前端·javascript·typescript