1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- const path=require('path');
- const { CleanWebpackPlugin } = require('clean-webpack-plugin');
- //const { HtmlWebpackPlugin } = require("html-webpack-plugin");
- const HtmlWebpackPlugin = require('html-webpack-plugin');
- //const { VueLoaderPlugin } = require('vue-loader/dist/index');
- const { VueLoaderPlugin } = require('vue-loader');
- module.exports={
- entry:{
- index:"./index.js",
- },
- output:{
- filename:"bundle.js",
- path:path.resolve(__dirname,"./dist")
- },
- resolve: {
- alias: {
- vue: 'vue/dist/vue.esm-bundler.js' // 关键配置
- }
- },
- module:{
- rules:[
- {
- test:/\.css$/i,
- use:["style-loader","css-loader"]
- },
- {
- test:/\.vue$/,
- use:[
- { loader:"vue-loader" }
- ]
- },
- // 处理 .js 文件
- {
- test: /\.js$/,
- exclude: /node_modules/,
- use: {
- loader: 'babel-loader',
- options: {
- presets: ['@babel/preset-env']
- }
- }
- },
- {
- test:/\.(png|jpe?g|gif|svg)$/i,
- // use:[{
- // loader:"file-loader",
- // options:{
- // limit: 512 * 1024,
- // name: "[name].[ext]",
- // outputPath:"media",
- // },
- // }]
- type: 'asset/resource',
- // generator:{
- // filename: "[name].[ext]",
- // }
- },
- {
- test:/\.(woff2?|eof|ttf)$/i,
- // use:[{
- // loader:"file-loader",
- // options:{
- // limit: 512 * 1024,
- // name: "[name].[ext]",
- // outputPath:"media",
- // },
- // }]
- type: 'asset/resource',
- generator:{
- filename: "./font/[name].[ext]",
- }
- },]
- },
- plugins:[
- new VueLoaderPlugin(),
- new CleanWebpackPlugin(),
- new HtmlWebpackPlugin({
- inject:'head',
- title:"index page ",
- template:"./index.html",
- filename:"index.html",
- chunks:['index'],
- }),
- ]
- }
|