webpack最基本配置
webpack.config.js
const path = require('path');
// html 生成
const HtmlWebpackPlugin = require('html-webpack-plugin');
// 打包前清空打包输出目录dist
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
module.exports = {
mode: 'development',
entry: path.resolve(__dirname, 'src/index.js'),
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist'),
publicPath: '/'
},
devtool: 'eval-cheap-module-source-map',
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': path.resolve(__dirname, 'src')
// '@': './src'
}
},
devServer: {
contentBase: path.resolve(__dirname, './dist'),
port: 3000,
// hot: true,
open: true
},
module: {
rules: [
// css文件处理
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
},
// css transform css-loader 处理import,style-loader是个脚本,在css-loader处理基础上继续处理,以让webpack能够使用
// sass-loader、node-sass都需要
{
test: /\.(sass|scss)$/,
use: [
'style-loader',
'css-loader',
'sass-loader'
]
},
// 图片
// url-loader 依赖 file-loader
{
test: /\.(png|svg|jpe?g|gif)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
// name: '[name].[hash:7].[ext]',
// outputPath: 'assets/image/',
// 该配置项为图片打包后的默认路径,带default对象,默认为ture,在配置项里将此项改为false即可去掉多余的defalut对象,处理html-withimg-loader 打包html中图片src是个有default属性的对象问题
esModule: false, // 该项默认为true,改为false即可
// 或者不配置outputPath,将outputPath和name拼接成一位字符串
name: 'assets/image/[name].[hash:7].[ext]'
}
},
{
test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: 'assets/media/[name].[hash:7].[ext]'
}
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: 'assets/fonts/[name].[hash:7].[ext]'
}
},
// babel 支持高级js语法
// 1、安装babel-loader、@babel/core、@babel/preset-env、@babel/plugin-transform-runtime、@babel/runtime【@babel/plugin-transform-runtime依赖此包】
// 2、配置.babelrc
{
test: /\.js$/,
use: [
'babel-loader'
]
},
// html html中如有图片引入可自动替换为打包后的路径,
// 需要设置url-loader中的ouput中的publicPath,不配置的话直接就是'/icon.png'
{
test: /\.(htm|html)$/,
loader: 'html-withimg-loader'
}
]
},
plugins: [
// html模板,生成打包文件自动引入
new HtmlWebpackPlugin({
title: 'webpack demo',
filename: 'index.html',
template: path.resolve(__dirname, 'index.html'),
// bundle文件插入位置,true(默认为body)、body、head、false
inject: true
}),
// 打包前清空打包输出目录,默认会清所有的ouput.path目录
new CleanWebpackPlugin(),
]
}
.babelrc
{ "presets": [ ["@babel/preset-env", { // 按需加载需要的polyfill "useBuiltIns": "usage" }] ], "plugins": [ "@babel/transform-runtime" ] }
-----smile

浙公网安备 33010602011771号