news 2026/6/10 0:35:45

webpack - 单独打包指定JS文件(因为不确定打出的前端包所访问的后端IP,需要对项目中IP配置文件单独拿出来,方便运维部署的时候对IP做修改)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
webpack - 单独打包指定JS文件(因为不确定打出的前端包所访问的后端IP,需要对项目中IP配置文件单独拿出来,方便运维部署的时候对IP做修改)

介绍

因为不确定打出的前端包所访问的后端IP,需要对项目中IP配置文件单独拿出来,方便运维部署的时候对IP做修改。

因此,需要用webpack单独打包指定文件。

CommonsChunkPlugin

module.exports={entry:{app:APP_FILE// 入口文件},output:{publicPath:'./dist/',//输出目录,index.html寻找资源的地址path:BUILD_PATH,// 打包目录filename:'[name].[chunkhash].js',// 输出文件名chunkFilename:'[name].[chunkhash].js'// commonChunk 输出文件}}

先说一下publicPath , 这边有一个注意的点,即路径写成 ./dist 相对路径。如果写成/dist/这种绝对路径,有一个弊端是当nginx把前端的包没有放在根目录的情况下,index.html会访问资源失败。

因此推荐写成相对路径,但是当使用相对路径时,有会存在一个潜在的问题,即项目本身的路由访问如果是HTML5模式,而不是使用hash时(路由上有一个#号),那么项目一样会部署失败。

angular,react都会有这样的问题,vue没用过,应该类似。此时的解决办法是,在index.html的head中添加base标签,即:

<head><metacharset="utf-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"/><basehref="/"></head>

webpack本身基于模块化,因此大多数情况下,我们仅需要一个入口文件就可以搞定。而针对本次需求,需要在app,这个入口之外再添加一个入口文件。即:

entry:{app:APP_FILE// 入口文件ip:IP_FILE},

仅这样对webpack配置之后,dist文件会成功打出app.xxx.js及ip.xxx.js,但是打包出的项目还是会报错,解决办法是:维持IP的入口文件不变,但是把它当作commonChunk来处理。即在plugins中加入:

newwebpack.optimize.CommonsChunkPlugin({name:'ip',minChunks:Infinity}),

这样保证优先加载ip.xxx.js,避免报错。

缺点:这样打包有一个很明显的缺点,即是打包出的文件是压缩的,不方便对文件进行二次修改。(没有找到解决压缩的办法)

CopyWebpackPlugin

最终解决办法,还是通过让ip.js这个文件脱离项目的模块化,然后在index.html中单独引用。(这是最开始就想到的解决办法,但并不是自己想要的解决方案,但无奈认知有限,没有解决掉之前的问题)。

解决流程:
首先在webpack引入CopyWebpackPlugin , 配置代码:

newCopyWebpackPlugin([{from:'./src/config/ip.js',to:'ip.js'},])

在index.html中单独引入script标签,注意要配置一个随机后缀,即:

<script>document.write("<s"+"cript type='text/javascript' src='./dist/ip.js?"+Math.random().toString(36).substr(2)+"'></scr"+"ipt>");</script>

防止ip.js因为缓存导致问题。

以上,就解决了webpack单独打包指定js的问题。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/5 8:42:43

python_django基于微信小程序的移动医院挂号预约系统

文章目录 系统概述技术架构核心功能创新点应用价值 系统设计与实现的思路主要技术与实现手段源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 系统概述 基于微信小程序的移动医院挂号预约系统采用PythonDjango框架开发后端服务&#xff0…

作者头像 李华
网站建设 2026/6/6 8:26:13

python_django安卓企业直播内容管理系统小程序

文章目录技术架构概述核心功能模块数据流与安全性能优化策略扩展性设计系统设计与实现的思路主要技术与实现手段源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;技术架构概述 Python Django 作为后端框架&#xff0c;提供 RESTful API 接…

作者头像 李华
网站建设 2026/6/6 7:22:56

基于Impress.js的智能多面棱柱演示器:技术与创意深度解析

第一章&#xff1a;引言与项目背景1.1 Web 3D交互的发展历程在当今快速发展的Web技术领域&#xff0c;3D交互体验已成为提升用户参与度和沉浸感的关键因素。从早期的Flash动画到如今的WebGL和CSS 3D变换&#xff0c;Web三维技术已经走过了漫长的发展道路。根据最新统计数据&…

作者头像 李华
网站建设 2026/6/5 20:57:27

程序员必学!企业级大模型落地全攻略:6-12个月实现AI转型的关键路径

企业级大模型作为突破性技术&#xff0c;能显著提升生产力并驱动业务创新。企业实施周期已缩短至6-12个月&#xff0c;47%的企业认为与领先厂商合作是成功关键。选择服务商时应注重全栈开发能力、丰富工具及垂直场景经验。成功标志不在于部署多少模型&#xff0c;而在于建立持续…

作者头像 李华
网站建设 2026/6/6 6:43:41

【机械臂路径规划】基于 RRT算法的3自由度机械臂路径规划器,在存在圆形障碍物的环境中,为机械臂找到一条从初始关节角度到目标关节角度的无碰撞路径附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#…

作者头像 李华