npm包说明
现阶段,Alita并不会去处理项目中的:node_modules目录,所以关于npm包,需要特别说明。
微信小程序自2.2.1
起支持了npm的功能,但是npm的支持不是很完善,具体请查看小程序npm文档
简单来说,不是所有的npm包都可以在微信小程序上使用。 假定你的RN项目 package.json
文件如下
{
...
"dependencies": {
"xxx": "^1.0.0",
"yyy": "^1.0.0",
}
...
}
其中xxx
包是可以直接运行在微信小程序平台的,不用处理。
对于yyy
包。 可能会有如下的考虑:
- 原包太大,而小程序有体积要求
- 原包不符合小程序的npm包规则,不能直接使用
- 原包调用了一些全局变量(如 window 对象),构造器(如 Function 构造器,RN固有API等小程序不存在对象,导致不能直接使用
一般这种情况,我们需要对yyy
包手动处理。 需要在手动创建一个微信小程序平台的包,与之对应。
假定我们在微信小程序端实现了一个yyy-wx
包 来处理。那么需要在alita.config.js
配置(alita.config.js 是alita默认配置文件)如下:
module.exports = {
dependencies: [
{
name: 'yyy',
wxName: 'yyy-wx',
}
]
}
这样,所有对yyy
包的应用,在微信小程序平台都会被替换为yyy-wx
import yyy from 'yyy'
// 会把转化为
import yyy from 'yyy-wx'
具体的使用可以请参考 HelloWorldRN 下@areslabs/stringutil-rn
包的配置和使用,
@areslabs/stringutil-rn
是一个封装lodash的工具包,在微信小程序平台,我们创建了一个体积更小的@areslabs/stringutil-wx
如果yyy
是React 组件包,那么还需要参考 第三方组件库扩展
需要特别强调的是:npm包的处理,特别依赖与package.json
文件的dependencies
字段,需要保证dependencies
字段的准确性,并把其他无关依赖
放置在devDependencies