123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- 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.js",
- output:{
- filename:"bundle.js",
- path:path.resolve(__dirname,"./dist"),
- assetModuleFilename:"media/[name].[ext]",
- },
- 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$/,
- loader: 'babel-loader',
- exclude: /node_modules/
- },
- {
- 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:'body',
- title:"webpack sample ",
- template:"./index.html"
- })
- ]
- }
|