当前位置: 首页 > article >正文

webpack 中,filename 和 chunkFilename 的区别

filename

filename 是一个很常见的配置,就是对应于 entry 里面的输入文件,经过webpack打包后输出文件的文件名。比如说经过下面的配置,生成出来的文件名为 index.min.js
请添加图片描述

chunkFilename

chunkFilename 指未被列在 entry 中,却又需要被打包出来的 chunk 文件的名称。一般来说,这个 chunk 文件指的就是要懒加载的代码。

比如说我们业务代码中写了一份懒加载 lodash 的代码:

// 文件:index.js

// 创建一个 button
let btn = document.createElement("button");
btn.innerHTML = "click me";
document.body.appendChild(btn);

// 异步加载代码
async function getAsyncComponent() {
    var element = document.createElement('div');
    const { default: _ } = await import('lodash');

    element.innerHTML = _.join(['Hello!', 'dynamic', 'imports', 'async'], ' ');

    return element;
}

// 点击 button 时,懒加载 lodash,在网页上显示 Hello! dynamic imports async
btn.addEventListener('click', () => {
    getAsyncComponent().then(component => {
        document.body.appendChild(component);
    })
})

我们的 webpack 不做任何配置,还是原来的配置代码:

{
    entry: {
        index: "../src/index.js"
    },
    output: {
        filename: "[name].min.js", // index.min.js
    }
}

这时候的打包结果如下:

请添加图片描述
这个 1.min.js 就是异步加载的 chunk 文件。文档里这么解释:

output.chunkFilename 默认使用 [id].js 或从 output.filename 中推断出的值([name] 会被预先替换为 [id][id].

文档写的太抽象,我们不如结合上面的例子来看:
output.filename 的输出文件名是 [name].min.js[name] 根据 entry 的配置推断为 index,所以输出为 index.min.js

由于 output.chunkFilename 没有显示指定,就会把 [name] 替换为 chunk 文件的 id 号,这里文件的 id 号是 1,所以文件名就是 1.min.js

如果我们显式配置 chunkFilename,就会按配置的名字生成文件:

{
    entry: {
        index: "../src/index.js"
    },
    output: {
        filename: "[name].min.js",  // index.min.js
        chunkFilename: 'bundle.js', // bundle.js
    }
}

请添加图片描述

总结

filename 指列在 entry 中,打包后输出的文件的名称。

chunkFilename 指未列在 entry 中,却又需要被打包出来的文件的名称。


http://www.kler.cn/a/134582.html

相关文章:

  • 比ChatGPT更酷的AI工具
  • 陪诊问诊APP开发实战:基于互联网医院系统源码的搭建详解
  • ubuntu-desktop-24.04上手指南(更新阿里源、安装ssh、安装chrome、设置固定IP、安装搜狗输入法)
  • 豆瓣均分9:不容错过的9本大模型入门宝藏书籍,非常详细收藏我这一篇就够了
  • Jmeter性能测试 -3数据驱动实战
  • 4.4 软件设计:UML顺序图
  • 全屋智能:鱼很大,但水更深
  • 【cpolar】搭建我的世界Java版服务器,公网远程联机
  • Python中,我们可以使用pandas和numpy库对Excel数据进行预处理,包括读取数据、数据清洗、异常值剔除等
  • Auto.js 清除指定应用缓存
  • RHCSA --- Linux存储管理
  • 定时器相关方法
  • AIGC创作系统ChatGPT源码,支持最新GPT-4-Turbo模型,支持DALL-E3文生图
  • (动手学习深度学习)第13章 计算机视觉---微调
  • Oracle for Windows安装和配置——Oracle for Windows net配置
  • EfficientPhys
  • 【笔记1-2】Qt系列:QkeyEvent 键盘事件 设定快捷键
  • Seaborn 回归(Regression)及矩阵(Matrix)绘图
  • R语言实现多变量孟德尔随机化分析(1)
  • 在IDEA中的DeBug调试技巧
  • Pycharm中添加Python库指南
  • MR外包团队:MR、XR混合现实技术应用于游戏、培训,心理咨询、教育成为一种创新的各行业MR、XR形式!
  • 学习c#的第二十二天
  • AnimateDiff搭配Stable diffution制作AI视频
  • vite vue3配置eslint和prettier以及sass
  • OpenWrt环境下,由于wget不支持ssl/tls导致执行opkg update失败的解决方法