webpack打包时如何修改文件名的实现示例

修改webpack打包后的文件名是一个比较常见的需求,这里提供一种通用的实现方式。具体实现步骤如下:

  1. 配置output的filename

webpack.config.js文件中,找到output配置项,将filename选项配置为一个函数,例如:

const path = require('path');

module.exports = {
  output: {
    filename: (chunkData) => {
      return chunkData.chunk.name === 'main' ? 'js/[name].[chunkhash].js' : 'js/[name].[contenthash].js';
    },
    path: path.resolve(__dirname, 'dist')
  }
}

上述代码中,我们将output的filename选项配置为一个函数,该函数接收一个chunkData参数,其中包括chunkData.chunk.name、chunkData.contentHash、chunkData.chunk.contentHash等信息。这里我们根据chunkData.chunk.name值的不同,使用不同的文件名模板。

如果chunkData.chunk.name等于'main',我们使用js/[name].[chunkhash].js作为文件名,其中[name]表示入口文件名,[chunkhash]表示chunk内容的hash值(这里使用chunkhash是因为我们将JS文件分离为单独的文件,需要保证文件内容的变化才能正确更新文件)。如果chunkData.chunk.name不等于'main',则使用js/[name].[contenthash].js作为文件名,其中[name]仍然表示入口文件名,[contenthash]表示chunk内容的hash值。

这样配置后,在打包后的dist目录下可以看到生成的JS文件名符合我们设定的规范。

  1. 配置html-webpack-plugin插件的filename

在使用webpack打包时,我们经常使用html-webpack-plugin插件将打包后生成的JS文件自动引入到HTML文件中,而且HTML文件自身的名称也希望能够得到修改。与此同时,我们还需要将生成的HTML文件保存到合适的文件夹下。

修改html-webpack-plugin插件的filename和path非常简单,只需要在webpack的配置文件中进行如下设置即可:

const HtmlWebpackPlugin = require('html-webpack-plugin');
const path = require('path');

module.exports = {
  output: {
    filename: (chunkData) => {
      return chunkData.chunk.name === 'main' ? 'js/[name].[chunkhash].js' : 'js/[name].[contenthash].js';
    },
    path: path.resolve(__dirname, 'dist')
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: './src/index.html',
      filename: 'index.html',
      path: path.resolve(__dirname, 'dist/custom-folder'),
    })
  ]
}

上述代码中,我们针对html-webpack-plugin插件进行了如下配置:

  • template选项:指定HTML文件的模板文件路径;
  • filename选项:指定生成的HTML文件名;
  • path选项:指定生成的HTML文件存放在哪个路径下。

我们可以根据需要,将生成的HTML文件存放到任意文件夹下,这里将HTML文件存放在了dist/custom-folder文件夹下。

如果有多个HTML文件需要生成,我们可以通过多次new HtmlWebpackPlugin调用,配置不同的filename和template选项,从而生成多个不同的HTML文件。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:webpack打包时如何修改文件名的实现示例 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • Python自然语言处理 – 系列四

    Python自然语言处理 – 系列四 在本系列的第四篇文章中,我们将介绍如何使用Python进行自然语言处理(NLP)。NLP是一种处理人类语言的技术,它可以让机器理解、解释和生成自然语言。在本文中,我们将重点介绍如何使用Python处理自然语言中的文本分类、语言翻译和命名实体识别等任务。 文本分类 文本分类是将文本分为不同类别的任务,例如电子邮件分类为“垃…

    其他 2023年3月28日
    00
  • hadoop常见错误以及处理方法详解

    Hadoop常见错误以及处理方法详解 在Hadoop大数据领域中,由于涉及到大规模数据的处理、存储、计算等操作,经常会遇到各种问题。本篇攻略将讲解一些Hadoop常见错误,以及解决方法的详解。 1. Name Node 宕机 Name Node 是 Hadoop 分布式文件系统(HDFS)的主节点,它存储了文件系统的元数据,包括文件、目录、文件属性(权限、创…

    other 2023年6月27日
    00
  • java中的HashMap多层嵌套

    Java中的HashMap多层嵌套攻略 在Java中,HashMap是一种常用的数据结构,用于存储键值对。HashMap允许多层嵌套,即在HashMap的值中再次使用HashMap作为值。这种多层嵌套的HashMap结构可以用于解决一些复杂的数据存储和访问问题。下面是详细的攻略。 创建多层嵌套的HashMap 要创建多层嵌套的HashMap,可以使用泛型来指…

    other 2023年7月27日
    00
  • linux下的wireshark最新版安装(源码安装)以及一些常见问题

    Linux下的Wireshark最新版安装(源码安装)以及一些常见问题 Wireshark是一个强大的网络包分析工具,它能够拦截网络流量,分析网络协议,并显示数据包的详细信息。在Linux系统中,我们可以使用源码安装的方式安装Wireshark最新版。 安装依赖项 在安装Wireshark之前,我们需要安装一些依赖项: sudo apt-get instal…

    其他 2023年3月28日
    00
  • rasrc4aes加密md5

    以下是关于RSA、RC4、AES加密和MD5哈希算法的完整攻略,包括算法原理、加密过程、示例说明等。 1. RSA加密算法 RSA加密算法是一种公钥加密法,它使用一对公钥和私钥来进行加密和解密操作。以下是RSA加密算法加密过程: 密钥:生成一对公钥和私钥。 加密:使用公钥对明文进行加密。 解密:使用私钥对密文进行解密。 以下是一个使用RSA加密算的示例说明:…

    other 2023年5月7日
    00
  • java中的异步处理和Feature接口(一)

    Java中的异步处理和Feature接口(一) 什么是异步处理 Java中的异步处理是指在程序运行时,某些任务并不是在主线程中执行,而是在另外的线程中执行,以提高程序的并行处理能力和效率。 通常情况下,程序中的异步任务会在完成后通知主线程,并将处理结果返回给主线程。这样主线程就可以通过获取异步任务的结果,继续执行其他的操作,从而不会被异步任务所阻塞。 Jav…

    其他 2023年3月28日
    00
  • JS表格组件神器bootstrap table详解(基础版)

    JS表格组件神器bootstrap table详解(基础版) 什么是Bootstrap Table Bootstrap Table是一个功能强大的jQuery表格插件,可以快速地在Web应用程序中添加数据表格。它集成了许多常见的功能和选项,包括数据排序、分页、过滤、列对齐、自适应和可定制的模板等等。Bootstrap Table还支持多个数据源,可以通过JS…

    other 2023年6月20日
    00
  • 微信小程序全局变量改变监听的实现方法

    微信小程序全局变量改变监听的实现方法攻略 在微信小程序中,要实现全局变量的改变监听,可以通过以下步骤进行操作: 步骤一:创建全局变量 首先,在小程序的app.js文件中创建一个全局变量,可以使用getApp()方法获取小程序实例,并在实例中定义全局变量。例如: // app.js App({ globalData: { count: 0 } }) 在上述示例…

    other 2023年7月29日
    00
合作推广
合作推广
分享本页
返回顶部