npm init -y
生成package.json
安装依赖环境
npm i -D webpack webpack-cli typescript ts-loader
webpack配置信息
创建文件webpack.config.js
//引入一个包
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",
//告诉webpack不使用箭头函数(兼容IE)
environment: {
arrowFunction: false
}
},
//指定webpack打包时要使用的模块
module: {
//指定要加载的规则
rules: [
{
//test指定规则生效的文件
test: /\.ts$/,
//要使用的loader
use: [
//配置babel
{
//指定加载器
loader: 'babel-loader',
//设置babel
options: {
//设置预定义环境
presets: [
//指定环境的插件
"@babel/preset-env",
//配置信息
{ //要兼容的目标的浏览器
targets:{
"chrome": "88"
}//指定corejs的版本
"corejs": "3",
"useBuiltIns": "useage", //使用corejs方式,按需加载
}
]
}
}
,
'ts-loader'
],
//要排除的文件
exclude: /node-module/
}
]
}
//配置webpack插件
plugins: [
new CleanWebpackPlugin(),
new HTMLWebpackPlugin(options: {
title: '这是一个自定义的title',
//生成自定义模版
template: "./src/index.html"
});
],
//用来设置引用模块
resolve: {
extensions: ['.ts', '.js']
}
}
tsconfig.json配置:
{
"compilerOptions": {
"module": "ES2015",
"target": "ES2015",
"strict": true
}
}
package.json的scripts配置项里添加:
"build": "webpack"
打包
npm run build
自动生成html文件,下载插件:
npm i -D html-webpack-plugin //在上述webpack.config.js中引入
内置服务器,打开网页:
npm i -D webpack-dev-server
package.json的scripts配置项里添加:
"start": "webpack server --open chrome.exe"
执行命令:
npm start
清空dist目录文件,保证每次构建为最新文件
npm i -D clean-webpack-plugin //在上述webpack.config.js中引入
在webpack.config.js中配置,告诉他哪些可以作为模块使用
//用来设置引用模块
resolve: {
extensions: ['.ts', '.js']
}
安装babel
npm i -D @babel/core @babel/preset-env babel-loader core-js
修改webpack.config.js
use: [
//配置babel
{
//指定加载器
loader: 'babel-loader',
//设置babel
options: {
//设置预定义环境
presets: [
//指定环境的插件
"@babel/preset-env",
//配置信息
{ //要兼容的目标的浏览器
targets:{
"chrome": "88"
}//指定corejs的版本
"corejs": "3",
"useBuiltIns": "useage", //使用corejs方式,按需加载
}
]
}
}
,
'ts-loader'
],