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

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

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"
}
相关推荐
傻小胖几秒前
React 组件通信完整指南 以及 自定义事件发布订阅系统
前端·javascript·react.js
万亿少女的梦1686 分钟前
高校网络安全存在的问题与对策研究
java·开发语言·前端·网络·数据库·python
Python私教35 分钟前
Vue3中的`ref`与`reactive`:定义、区别、适用场景及总结
前端·javascript·vue.js
CQU_JIAKE36 分钟前
12.12【java exp4】react table全局搜索tailwindcss 布局 (Layout) css美化 3. (rowId: number
前端·javascript·react.js
m0_748236581 小时前
Django 后端数据传给前端
前端·数据库·django
余生H2 小时前
前端Python应用指南(五)用FastAPI快速构建高性能API
前端·python·fastapi
racerun2 小时前
Vue vuex.store mapState
前端·javascript·vue.js
2301_801074152 小时前
ArkTs组件(2)
开发语言·前端·华为·harmonyos
DT——2 小时前
Sass复习篇
前端·css·sass
m0_748251722 小时前
ollama-webui - Ollama的ChatGPT 风格的 Web 界面
前端·chatgpt