webpack 单独打包指定JS文件
来源:互联网 发布:淘宝硅胶充气娃娃 编辑:程序博客网 时间:2024/06/13 11:02
背景
最近接到一个需求,因为不确定打出的前端包所访问的后端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> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"/> <base href="/"></head>
}
webpack本身基于模块化,因此大多数情况下,我们仅需要一个入口文件就可以搞定。而针对本次需求,需要在app,这个入口之外再添加一个入口文件。即:
entry: { app: APP_FILE // 入口文件 ip: IP_FILE },
仅这样对webpack配置之后,dist文件会成功打出app.xxx.js及ip.xxx.js,但是打包出的项目还是会报错,解决办法是:维持IP的入口文件不变,但是把它当作commonChunk来处理。即在plugins中加入:
new webpack.optimize.CommonsChunkPlugin({name: 'ip', minChunks: Infinity}),
这样保证优先加载ip.xxx.js,避免报错。
缺点:这样打包有一个很明显的缺点,即是打包出的文件是压缩的,不方便对文件进行二次修改。(没有找到解决压缩的办法)
CopyWebpackPlugin
最终解决办法,还是通过让ip.js这个文件脱离项目的模块化,然后在index.html中单独引用。(这是最开始就想到的解决办法,但并不是自己想要的解决方案,但无奈认知有限,没有解决掉之前的问题)。
解决流程:
首先在webpack引入CopyWebpackPlugin, 配置代码:
new CopyWebpackPlugin([ {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的问题。
ps:希望有更好的方法来分享给我。
- webpack 单独打包指定JS文件
- webpack使用file-loader单独打包js文件
- webpack打包js文件,自用~~
- webpack打包并将文件加载到指定的位置
- webpack打包文件
- webpack打包生成的bundle.js文件过大的问题
- webpack将js打包后的map文件
- webpack清除打包文件夹中多余的js文件
- webpack 入门总结和实践(按需异步加载,css单独打包,生成多个入口文件)
- webpack打包js调试配置
- extract-text-webpack-plugin插件提取css单独打包
- webpack 独立打包 css 文件
- webpack 多入口文件打包
- 使用webpack打包脚本文件
- webpack.config.js文件
- webpack笔记-----编辑webpack.config.js文件
- 给文件单独指定编译指令
- 如何降低Vue.js项目中Webpack打包文件的大小?
- 有关VMware(虚拟机)的配置问题
- spring只读事务属性和超时事务属性
- 按钮布局演示
- 关于c++异常的初接触try{}catch{}
- 【Redis】——概览
- webpack 单独打包指定JS文件
- 239. Sliding Window Maximum
- LintCode余弦相似度
- 寻找三角形
- 错误:仅当显式请求注释处理时才接受类名称
- CodeForces
- 【安卓小笔记】开发过程的小功能实现
- 每日练习2017-11-06
- OkHttp的同步请求和异步请求