栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用webpack更新多个捆绑的js文件?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用webpack更新多个捆绑的js文件?

由于您使用的是

'widget.[contenthash].js'
内容哈希,因此每次文件内容更改时它都会更改,因此您无法将文件与用户关联

您可以做的是代替使用

contenthash
,可以做这样的事情

{  output {    filename: `widget.${someUserSpecificId}.js`    ...    ...  }}

现在的问题是,您将如何通过

someUserSpecificId
in配置。为此,您可以使用Webpack的环境选项

现在在webpack配置中,如果您导出函数而不是像这样的对象

function (env, arg) {  return {    ...    ...    output: {      filename: `widget.${env.someUserSpecificId}.js`      ...      ...  }}

现在您可以通过

env.someUserSpecificId
with cli选项,例如

 webpack --env.someUserSpecificId=foo

现在,您可以根据需要为任何用户更新任何捆绑软件

请注意 ,您不要在文件名中使用实际的用户ID,因为它会向客户端公开,而是为每个用户生成一些随机ID,可以在客户端公开,并且每个用户唯一


*上面描述的 *UPDATe 方法对于更新某些特定的包是很有用的,但是如果您想一次更新所有包,则必须稍微调整一下逻辑

无需传递

someUserSpecificId
from命令行参数,您可以执行此操作

const usersIdArray = ['userId1', 'userId2', ...otherUsersId];const webpackConfig = userIdArray.map(someUserSpecificId => {  return {    ...    ...    output: {      filename: `widget.${someUserSpecificId}.js`      ...      ...    }  };});module.exports = webpackConfig;

它会做什么,它将为您提供多个webpack配置的数组,您可以将该数组直接传递给webpack,然后webpack将根据各自的配置更新所有文件,请参阅导出多个配置

请注意, 如果您有大量用户,请分小批处理任务

其他优化想法,
因为您正在服务器上运行此任务,所以最好考虑进行一些优化以减少重复性任务,我现在想到的一个想法是,您可以分两部分构建捆绑包。将包含用户特定的配置2。将包含您的代码

因此,如果用户更改其配置,则仅需构建该部分,并且如果更改配置,则也仅需构建一次,因为所有用户的通用代码都相同(例如theme)

当您创建最终捆绑包时,只需将用户特定的配置与代码结合起来,这样就可以减少重复的任务,并且速度会更快



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/616459.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号