uni-app 开发微信小程序插件时,npm包依赖是否能不打包进vendors.js而是由微信开发者工具的“构建npm包”功能去构建?

11dmarpk  于 2023-02-04  发布在  uni-app
关注(0)|答案(7)|浏览(672)

新功能描述
通过新增配置项指定,开发微信小程序插件时,npm包依赖不直接打包进vendor.js而是开发者通过微信开发者工具的“构建npm包”功能去构建依赖。

现状及问题
现状:npm依赖统一打包进了vendor.js
问题:假设用uni-app开发了多个插件,这些插件通过拷贝或者npm包形式在一个原生小程序项目中使用,那么vendor.js就会存在多份,其中有很多依赖内容是重复的,比如vue。

尝试方案
在打包时增加配置项,允许npm依赖(例如vue)在打包生成的插件代码中统一变为require("vue")的形式,而不是当前的require("xxx/common/vendor.js")。这样开发者通过在小程序主包中构建npm,就能起到多个插件能同时共用依赖的效果。

补充信息
uni-app开发微信小程序插件官方示例
微信小程序开发者工具构建npm文档说明

8wtpewkr

8wtpewkr1#

微信小程序插件是互相隔离的吧
确定多个插件能共享npm依赖吗?

biswetbf

biswetbf2#

微信小程序插件是互相隔离的吧 确定多个插件能共享npm依赖吗?

如果把一个插件视作一个分包(非主包),分包之间的资源不能共享。但不同分包都能使用主包的资源,从这个角度看分包能共享npm依赖。也就是当npm依赖放在主包中加载时,各个分包都能访问到。写了个简单的demo,链接贴在下面。目前rax.js的插件开发功能的产物中依赖引用也是通过npm方式引入的,希望uni-app也能做类似支持。

相关链接
微信小程序分包资源引用规则
小程序分包引用主包npm资源demo
rax.js插件开发文档

iqih9akk

iqih9akk3#

描述的不太清晰,你指的是分包,不是插件吧?概念最好清晰一点,你说的是,使用uni-app开发分包,然后集成到原生小程序?希望共享vue?

to94eoyn

to94eoyn4#

描述的不太清晰,你指的是分包,不是插件吧?概念最好清晰一点,你说的是,使用uni-app开发分包,然后集成到原生小程序?希望共享vue?

昨天看了一下插件开发和混合开发两个示例的demo,发现产物形式差不多所以把两个概念混淆了,抱歉给你造成了混乱。你说的是对的,不仅仅是vue,也可能有另外一些体积比较大的npm包。目前来看至少vue做成公共依赖就能节省较多的体积了。

vs91vp4v

vs91vp4v5#

描述的不太清晰,你指的是分包,不是插件吧?概念最好清晰一点,你说的是,使用uni-app开发分包,然后集成到原生小程序?希望共享vue?

昨天看了一下插件开发和混合开发两个示例的demo,发现产物形式差不多所以把两个概念混淆了,抱歉给你造成了混乱。你说的是对的,不仅仅是vue,也可能有另外一些体积比较大的npm包。目前来看至少vue做成公共依赖就能节省较多的体积了。

了解了,我们后续会评估下

wqlqzqxt

wqlqzqxt6#

描述的不太清晰,你指的是分包,不是插件吧?概念最好清晰一点,你说的是,使用uni-app开发分包,然后集成到原生小程序?希望共享vue?

昨天看了一下插件开发和混合开发两个示例的demo,发现产物形式差不多所以把两个概念混淆了,抱歉给你造成了混乱。你说的是对的,不仅仅是vue,也可能有另外一些体积比较大的npm包。目前来看至少vue做成公共依赖就能节省较多的体积了。

了解了,我们后续会评估下

非常感谢,辛苦了。其实从我的角度出发,更期待uni-app能出一个把“vue组件”直接编译成“微信小程序原生自定义组件”的功能,类似上面提到的 rax.js组件开发功能 。基于自定义组件的形式嵌入到旧有的原生小程序项目会比当前基于分包去嵌入更加灵活和方便。

fzsnzjdm

fzsnzjdm7#

请问关于这个issue有新的进展吗?

相关问题