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日

相关文章

  • vue :src 文件路径错误问题的解决方法

    当在Vue中引用图片等资源时,有时会出现src文件路径错误的问题,这会导致资源无法正确加载并显示。下面我们来讲解一下如何解决这个问题。 问题原因 Vue中的src属性会默认将路径解析为相对路径,这意味着需要非常小心的处理,在某些情况下,路径可能会相对于当前的路由或组件进行解析,而不是相对于您的应用程序的根路径解析。这通常会导致src路径错误的问题。 解决方法…

    other 2023年6月27日
    00
  • AsyncConfigurerSupport自定义异步线程池处理异常

    异步编程是提高程序并发处理能力的重要手段,而线程池则是异步编程中的重要工具之一。在 Spring Boot 中,通过 @EnableAsync 注解开启异步执行支持,可以让一些繁琐耗时的操作在后台线程中进行,以提高系统的响应速度。但是,如果没有合理地管理好异步线程池,就有可能导致线程数量过多、内存溢出等问题,甚至可能会造成系统宕机。因此,在实际开发中,我们通…

    other 2023年6月26日
    00
  • springboot连接oracle数据库的基本配置

    Spring Boot连接Oracle数据库的基本配置 在Spring Boot中,连接Oracle数据库需要进行一些基本配置。本文将介绍如何在Spring Boot中连接Oracle数据库的基本配置,包括添加依赖、配置数据源、配置JPA等。 添加依赖 首先,在pom.xml文件中添加Oracle数据库的依赖。可以在<dependencies>标…

    other 2023年5月9日
    00
  • oracle切换用户操作–or–sys用户密码忘记

    Oracle切换用户操作–OR–sys用户密码忘记 在Oracle数据库中,经常需要切换用户来执行相应的操作。同时,在管理Oracle数据库时,一旦忘记sys用户的密码,也需要进行相应的操作处理。本文将介绍如何切换Oracle用户以及如何处理忘记sys用户密码的情况。 1. 切换Oracle用户 Oracle支持非常方便的用户身份切换操作,主要有以下几种…

    其他 2023年3月29日
    00
  • javascript全局变量封装模块实现代码

    要实现“JavaScript全局变量封装模块”,有以下几步: 1. 创建命名空间 在JavaScript中,全局变量会污染整个命名空间,容易导致变量名冲突或覆盖。因此,我们需要创建一个命名空间,把全局变量封装在这个命名空间中。 var MyModule = {}; 2. 定义模块的变量和方法 在命名空间中定义一个对象,并把变量和方法添加到这个对象中。 var…

    other 2023年6月25日
    00
  • VS2015 调试 条件和操作设置

    VS2015 调试 条件和操作设置 在 Visual Studio 2015 中,我们可以使用调试器来帮助我们诊断和排除代码中的错误。其中,条件和操作设置可以在我们调试程序时,为我们提供一些额外的控制能力。 条件设置 条件设置可以基于某个表达式的值,来规定是否停止在某处断点或者是继续运行程序到下一个断点。使用条件设置要遵循以下步骤: 右击要设置条件的断点,选…

    其他 2023年3月28日
    00
  • docker删除none

    什么是Docker? Docker是一种开源的容器化平台,可以帮助开发人员和系统管理员更轻松地构建、部署和运行应用程序。 什么是Docker none? 在Docker中,当容器被删除时,它们会留下一个名为“none”的镜像。这些镜像不包含任何文件,但它们会占用磁盘空间并且可能会导致Docker镜像列表变得混乱。 如何删除Docker none? 以下是在D…

    other 2023年5月7日
    00
  • h5plus/h5+规范使用 模块索引 教你如何去看h5+的手册

    h5plus/h5+规范使用 模块索引 教你如何去看h5+的手册 H5+是基于HTML5的跨平台移动应用开发技术,它包含一系列的特性,提供了丰富的API和组件,可以使得开发者快速地开发出高质量的移动应用。 在使用H5+开发移动应用过程中,我们需要了解H5+的各个组件、API的用法和功能。在H5+官方网站中,我们可以找到相关文档和手册,这些文档和手册非常详细,…

    其他 2023年3月29日
    00
合作推广
合作推广
分享本页
返回顶部