webpack打包基本配置

需要的文件

具体代码

webpack.config.js

javascript 复制代码
const path = require('path');

const HTMLWebpackPlugin = require('html-webpack-plugin');

const {CleanWebpackPlugin} = require('clean-webpack-plugin');
module.exports = {
    mode: 'production',
    entry: "./src/index.ts",
    output: {
        path: path.resolve(__dirname, './dist'),
        filename: "bundle.js",
        environment: {
            arrowFunction: false
        }
    },
    module: {
        rules: [
            {
                test: /\.ts$/,
                use: [
                    {
                        loader: 'babel-loader',
                        options: {
                            "presets": [
                                [
                                    "@babel/preset-env",
                                    {
                                        "targets": {
                                            "browsers": ["ie 11"]
                                        },
                                        "corejs": 3, // 注意这里应该是数字 3,而不是字符串 "3"
                                        "useBuiltIns": "usage" // 注意大小写,是 "useBuiltIns" 而不是 "useBuiltins"
                                    }
                                ]
                            ]
                        }
                    },
                    'ts-loader',
                ],
                exclude: /node_modules/,
            }
        ]
    },
    plugins: [
        new CleanWebpackPlugin(),
        new HTMLWebpackPlugin({
            template: "./src/index.html"
        })
    ],
    resolve: {
        extensions: ['.ts', '.tsx', '.js']
    }
}

tsconfig.json

bash 复制代码
{
  "compilerOptions": {
    "target": "es2015",
    "module": "es2015",
    "strict": true,
  }
}

package.json

bash 复制代码
{
  "name": "part3",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "webpack",
    "start": "webpack serve --open"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "description": "",
  "devDependencies": {
    "@babel/core": "^7.27.3",
    "@babel/preset-env": "^7.27.2",
    "babel-loader": "^10.0.0",
    "clean-webpack-plugin": "^4.0.0",
    "core-js": "^3.42.0",
    "html-webpack-plugin": "^5.6.3",
    "ts-loader": "^9.5.2",
    "typescript": "^5.8.3",
    "webpack": "^5.99.9",
    "webpack-cli": "^6.0.1",
    "webpack-dev-server": "^5.2.1"
  }
}

index.html

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
  This is a template
</div>
</body>
</html>

index.ts

typescript 复制代码
import {hi} from './m1'

function sum(a:number, b:number):number {
    return a + b;
}

const  obj={name:"孙悟空",age:33}
console.log(obj)

obj.age=18;
console.log(obj)

console.log(sum(123,456))
console.log(sum(123,2))
console.log(hi)

console.log(Promise)

m1.ts

typescript 复制代码
export const hi='你好啊'
相关推荐
程序员Agions8 小时前
useMemo、useCallback、React.memo,可能真的要删了
前端·react.js
David凉宸8 小时前
Vue 3 + TS + Vite + Pinia vs Vue 2 + JS + Webpack + Vuex:对比分析
javascript·vue.js·webpack
滕青山8 小时前
Vue项目BMI计算器技术实现
前端·vue.js
子兮曰8 小时前
深入浏览器指纹:Canvas、WebGL、Audio是如何暴露你的身份的?
前端·浏览器·canvas
月亮补丁8 小时前
AntiGravity只能生成 1:1 图片?一招破解尺寸限制
前端
何中应9 小时前
MindMap部署
前端·node.js
NAGNIP9 小时前
程序员效率翻倍的快捷键大全!
前端·后端·程序员
一个网络学徒9 小时前
python5
java·服务器·前端
tiantian_cool9 小时前
Claude Opus 4.6 模型新特性(2026年2月5日发布)
前端
0思必得09 小时前
[Web自动化] Selenium获取元素的子元素
前端·爬虫·selenium·自动化·web自动化