博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何使用 Vue 来实现一个项目多平台打包?
阅读量:5331 次
发布时间:2019-06-14

本文共 759 字,大约阅读时间需要 2 分钟。

这个需求是源于我们要根据一个项目,针对某些组件(比如:日期 和 下拉组件 ) 和 页面 做终端的兼容,最终需要实现打包成2个平台:h5 和 pc

  H5平台,日期组件:                               
 

  PC平台,日期组件:

 

首先,我们在 package.json-> scripts 里通过参数来区分‘平台’。建议使用 cross-env 去做平台的区分,因为我发现 vue-cli 使用起来太繁琐,需要定义.env文件来区分平台

 

然后:需要设置 pages 多页对象

!!!注意,【第一个坑】来了~~~~,,,这里需要根据配置的多页pages对象的key去找到相应的模版 config.plugin('html-${key}') ,而不是 config.plugin('html') 

!!!注意,【第二个坑】来了~~~~,,, 这里 main.js 获取不到环境变量,因为这里的 process.env 获取到的是.env文件配置的环境变量

解决方案-1,是可以通过注入全局变量window.BUILD_APP_PLATFORM; (请看图-2?)

图-1: 

图-2,请看最上面第二张图片

config.plugin(`html-${key}`).tap(args => {     args[0]['platform'] = process.env.APP_PLATFORM;}

 

解决方案-2通过动态注入环境变量到 process.env 里 ,弥补.env文件只能注入静态的缺陷

 【注意】这个时候 main.js 就能获取到 APP_PLATFORM 环境变量了

 

代码实现的细节不再这里细将,执行 npm run build 的最终效果如下:

 

转载于:https://www.cnblogs.com/Kummy/p/11405075.html

你可能感兴趣的文章
观察者模式(Observer)
查看>>
python中numpy.r_和numpy.c_
查看>>
egret3D与2D混合开发,画布尺寸不一致的问题
查看>>
freebsd 实现 tab 命令 补全 命令 提示
查看>>
struts1和struts2的区别
查看>>
函数之匿名函数
查看>>
shell习题第16题:查用户
查看>>
Redis常用命令
查看>>
2018.11.06 bzoj1040: [ZJOI2008]骑士(树形dp)
查看>>
2019.02.15 bzoj5210: 最大连通子块和(链分治+ddp)
查看>>
redis cluster 集群资料
查看>>
微软职位内部推荐-Sr. SE - Office incubation
查看>>
微软职位内部推荐-SOFTWARE ENGINEER II
查看>>
centos系统python2.7更新到3.5
查看>>
C#类与结构体究竟谁快——各种函数调用模式速度评测
查看>>
我到底要选择一种什么样的生活方式,度过这一辈子呢:人生自由与职业发展方向(下)...
查看>>
poj 题目分类
查看>>
windows 安装yaml支持和pytest支持等
查看>>
读书笔记:季羡林关于如何做研究学问的心得
查看>>
面向对象的优点
查看>>