- 需求的场景描述(希望解决的问题)
从2.2.1之后是支持npm模块的,但是目前的npm模块对于文件处理有些问题,主要是跟原生的npm模块的使用比起来。
模块不支持默认的index.js,在引用模块的时候需要输入完整的xx-module/wx/index,而不是像npm模块那样,只需要xx-module/wx即可。
模块在“构建npm”之后调整了目录,其实是根据入口文件编译生成了一个文件。
针对2,目前的npm模块通过指定入口文件,比如index.js,应该是使用了类似rollup.js的优化编译,也就是会根据入口文件搜索关联文件,然后编译处理。如果文件中有另一个文件other.js没有使用,则会被丢弃。
其实,这样处理是很合理的。只是恰好有这样的需求,需要处理两个平台,有一定兼容性问题。在模块内部使用了两个入口,类似这样:
import wx from ‘@modules/xx-module/wx’;
import co from ‘@modules/xx-module/co’;
同一个npm模块,提供两个入口。如果不能提供多个入口的话,需要再拆分为两个模块,其实虽然有一些兼容性问题,很多逻辑处理都是一直的,再拆分为两个模块的话,不利于代码的组织和管理。
- 希望提供的能力
模块默认index.js文件处理;
可以在模块文件中指定多个入口文件(可在读取入口文件的配置文件中添加额外的字段进行配置),npm模块编译的时候保留多个入口文件。