- npm init -y 生成package.json文件
- npm i -D webpack webpack-cli typescript ts-loader 安装
- npm i -D html-webpack-plugin 安装html自动生成插件
- npm i -D webpack-dev-server 安装开发服务器
- npm i -D clean-webpack-plugin 安装清除插件,可以在重新编译前把生成目录内文件全部清除,防止旧文件保留
- npm i -D @babel/core @babel/preset-env babel-loader core-js 安装bable实现在低版本浏览器中兼容。可以把新语法转变为旧语法,可以支持新特性如promise,class等(core-js功能)。
具体的webpack.config.js
//引入一个包
const path = require("path");
//引入html插件
const HTMLWebpackPlugin = require("html-webpack-plugin");
//引入clean插件
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
//webpack的所有配置信息都应该写在module.export中
module.exports = {
//指定入口文件
entry: "./src/index.ts",
mode: "production",
//指定打包文件所在目录
output: {
//指定打包文件所在目录
path: path.resolve(__dirname, "dist"),
//打包后文件的名称
filename: "boundle.js",
//设置打包环境,告诉webpack不使用箭头环境
environment:{
arrowFunction: false
}
},
//指定webpack打包使用的模块
module: {
//指定要加载的规则
rules: [
{
//test指定规则生效的文件
test: /\.ts$/, //所有以ts结尾的文件
use: [
//新版本js转为旧版本js
{
//指定加载器
loader: "babel-loader",
options: {
//设置预定义的环境
presets: [
[
//指定环境的插件
"@babel/preset-env",
//配置信息
{
targets: {
//要兼容的目标浏览器
chrome: "58",
ie: '11'
},
//指定corejs的版本
corejs: "3",
//使用corejs的方式"usage"表示按需加载
useBuiltIns: "usage",
},
],
],
},
},
//ts代码转为js
"ts-loader",
], //要使用的loader,加载顺序是从后往前
exclude: /node_modules/, //排除的文件
},
],
},
//配置webpack插件
plugins: [
new CleanWebpackPlugin(),
new HTMLWebpackPlugin({
// title: 'testtest'
template: "./src/template.html",
}),
],
//用来设置引用模块,哪些文件可以作为模块
resolve: {
extensions: [".ts", ".js"],
},
};