修改输出资源的名称和路径、自动清空上次打包资源

一、修改输出资源的名称和路径

1.1 配置

javascript 复制代码
const path = require("path");

module.exports = {
  // 入口【相对路径】
  entry: './src/main.js',
  // 输出
  output: {
    // 文件的输出路径【绝对路径】
    // __dirname 当前文件的文件夹的绝对路径
    path: path.resolve(__dirname, 'dist'),
    // 入口文件打包输出的文件名称
    filename: 'static/js/main.js',

  },
  // 加载器
  module: {
    rules: [
      // loader 的配置
      // css样式
      {
        test: /\.css$/i,// 只检测.css文件
        use: [// 执行顺序:从右到左,从下到上
          'style-loader',// 将js中css通过创建style标签添加到html文件中生效
          'css-loader',// 将css资源编译成commonjs的模块到js中
        ]
      },
      // less样式
      {
        test: /\.less$/i,// 只检测.css文件
        use: [// 执行顺序:从右到左,从下到上
          'style-loader',// 将js中css通过创建style标签添加到html文件中生效
          'css-loader',// 将css资源编译成commonjs的模块到js中
          'less-loader',// 将less文件编译成css文件
        ]
      },
      // sass样式
      {
        test: /\.s[ac]ss$/i,// 只检测.css文件
        use: [// 执行顺序:从右到左,从下到上
          'style-loader',// 将js中css通过创建style标签添加到html文件中生效
          'css-loader',// 将css资源编译成commonjs的模块到js中
          'sass-loader',// 将sass文件编译成css文件
        ]
      },
      // stylus样式
      {
        test: /\.styl$/i,// 只检测.css文件
        use: [// 执行顺序:从右到左,从下到上
          'style-loader',// 将js中css通过创建style标签添加到html文件中生效
          'css-loader',// 将css资源编译成commonjs的模块到js中
          'stylus-loader',// 将Styl文件编译成css文件
        ]
      },
      {
        test: /\.(png|jpe?g|gif|webp|svg)$/,
        type: 'asset',
        parser: {
          dataUrlCondition: {
            // 小于10kb的图片会转成base64
            // 优点:减少请求数量;缺点:体积会变大
            maxSize: 10 * 1024
          }
        },
        generator: {
          // 输出图片的名称
          /*
            static/images/: 指定了输出文件的基础目录为 static/images/
            [hash:10]: hash值取前8位
            [ext]: 保留原文件的扩展名
            [query]: 保留原文件的查询字符串部分
          */
          filename: "static/iamges/[hash:8][ext][query]"
        }
      }
    ]
  },
  // 插件
  plugins: [
    // plugin的配置
  ],
  /* 
    模式:
      开发模式:development
      生产模式:production
  */
  mode: "development"
}

1.2 修改index.html

html 复制代码
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>webpack5</title>
  </head>
  <body>
    <h1>Hello Webpack5</h1>
    <div class="box1"></div>
    <div class="box2"></div>
    <div class="box3"></div>
    <div class="box4"></div>
    <div class="box5"></div>
    <!-- 修改 js 资源路径 -->
    <script src="../dist/static/js/main.js"></script>
  </body>
</html>

1.3 运行指令

html 复制代码
npx webpack

注意:需要将上次打包生成的文件清空,再重新打包才有效果。

此时输出文件目录为:

html 复制代码
├── dist
    └── static
         ├── imgs
         │    └── 7003350e.png
         └── js
              └── main.js

二、自动清空上次打包资源

主要修改地方就是:clean: true,

javascript 复制代码
const path = require("path");

module.exports = {
  // 入口【相对路径】
  entry: './src/main.js',
  // 输出
  output: {
    // 文件的输出路径【绝对路径】
    // __dirname 当前文件的文件夹的绝对路径
    path: path.resolve(__dirname, 'dist'),
    // 入口文件打包输出的文件名称
    filename: 'static/js/main.js',
    // 自动清空上次打包结果
    // 原理:在打包前,将上述配置的path整个目录内容清空,再进行打包
    clean: true,
  },
  // 加载器
  module: {
    rules: [
      // loader 的配置
      // css样式
      {
        test: /\.css$/i,// 只检测.css文件
        use: [// 执行顺序:从右到左,从下到上
          'style-loader',// 将js中css通过创建style标签添加到html文件中生效
          'css-loader',// 将css资源编译成commonjs的模块到js中
        ]
      },
      // less样式
      {
        test: /\.less$/i,// 只检测.css文件
        use: [// 执行顺序:从右到左,从下到上
          'style-loader',// 将js中css通过创建style标签添加到html文件中生效
          'css-loader',// 将css资源编译成commonjs的模块到js中
          'less-loader',// 将less文件编译成css文件
        ]
      },
      // sass样式
      {
        test: /\.s[ac]ss$/i,// 只检测.css文件
        use: [// 执行顺序:从右到左,从下到上
          'style-loader',// 将js中css通过创建style标签添加到html文件中生效
          'css-loader',// 将css资源编译成commonjs的模块到js中
          'sass-loader',// 将sass文件编译成css文件
        ]
      },
      // stylus样式
      {
        test: /\.styl$/i,// 只检测.css文件
        use: [// 执行顺序:从右到左,从下到上
          'style-loader',// 将js中css通过创建style标签添加到html文件中生效
          'css-loader',// 将css资源编译成commonjs的模块到js中
          'stylus-loader',// 将Styl文件编译成css文件
        ]
      },
      {
        test: /\.(png|jpe?g|gif|webp|svg)$/,
        type: 'asset',
        parser: {
          dataUrlCondition: {
            // 小于10kb的图片会转成base64
            // 优点:减少请求数量;缺点:体积会变大
            maxSize: 10 * 1024
          }
        },
        generator: {
          // 输出图片的名称
          /*
            static/images/: 指定了输出文件的基础目录为 static/images/
            [hash:10]: hash值取10位
            [ext]: 保留原文件的扩展名
            [query]: 保留原文件的查询字符串部分
          */
          filename: "static/iamges/[hash:10][ext][query]"
        }
      }
    ]
  },
  // 插件
  plugins: [
    // plugin的配置
  ],
  /* 
    模式:
      开发模式:development
      生产模式:production
  */
  mode: "development"
}
相关推荐
喜欢吃鱿鱼12 分钟前
DES加解密(附带解决转义问题)-VUE
开发语言·前端·javascript
腹黑天蝎座15 分钟前
前端性能优化实战指南:从原理到落地的全方位解决方案
前端·性能优化·监控
忆往wu前20 分钟前
一文通透 Vue动态组件体系:插槽|数据监听|组件通信|动态切换|缓存—闭环
前端·面试
奇奇怪怪的问题21 分钟前
问题总结:关于封装axios问题,导致外部使用接口报错,无法进入error回调
前端·axios
Jenlybein21 分钟前
速学 VS Code 插件开发入门,客制化你的开发体验
前端·javascript·visual studio code
qq_437100661 小时前
SSE 流式响应(Server-Sent Events)
前端·sse
十六年开源服务商1 小时前
游戏与设计驱动WordPress建站2026
java·前端·游戏
ZC跨境爬虫1 小时前
UI前端美化技能提升日志day7:(原生苹方字体全局适配+合规页脚完整像素级落地)
前端·javascript·ui·html·交互
好运的阿财1 小时前
OpenClaw工具拆解之tts+web_search
前端·javascript·python·ai·ai编程·openclaw·openclaw工具
whinc2 小时前
Node.js技术周刊 2026年第17周
前端·javascript