【发布时间】:2020-05-28 10:23:27
【问题描述】:
我想为博览会分发一个包。这个包是在 expo SDK36 中构建我的应用程序时创建的。
像许多 expo 依赖项一样,我大量使用 .ios.js、.android.js 和 .web.js 扩展。
在导入我在 npm 上分发的源时,解析器只导入 .js,没有任何区别。
例如 this package 应该与 expo 一起使用:
这是@expo/webpack-config 解析的扩展:
[
".web.expo.ts",
".web.expo.tsx",
".web.expo.mjs",
".web.expo.js",
".web.expo.jsx",
".expo.ts",
".expo.tsx",
".expo.mjs",
".expo.js",
".expo.jsx",
".web.ts",
".web.tsx",
".web.mjs",
".web.js",
".web.jsx",
".ts",
".tsx",
".mjs",
".js",
".jsx",
".json",
".wasm"
]
但它没有,我必须通过在源代码中添加.web 后缀来手动导入。
如何配置expo 或我的分布式包,以便在从node_modules 导入源时能够为每个环境导入正确的源?
编辑
我错误地期望我的扩展程序可以与我的 package.json 的 main 字段一起使用,我已经重新配置了我的存储库:
/home/dka/workspace/github.com/yeutech-lab/react-cookiebot/src
├── CookieBot.js
├── CookieBot.native.js
└── index.js
问题:
- 我使用了
.native.js,所以我的reactjs 用户(不仅是expo 和react-native 用户)将默认导入.js文件 - 由于 (1),其他 react 用户(既不是 react-native 也不是 expo)不需要某种额外的配置来支持 react-native 扩展
.web.js,.ios.js,.android.is、.native.js和.js。 - 如果我更喜欢
.web.js而不是 (1),我的 react 用户将无法像 (2) 中那样做,并且这个案例:他们在项目中配置 react-native 扩展的方式是什么? - 对于所有 react-native 用户,我可以知道在原生项目中可以配置扩展的位置吗?(我相信 web 项目可以使用
config.resolve.extensions在 webpack 中配置)
【问题讨论】:
标签: javascript react-native webpack expo metro-bundler