Dim*_*iwa 5 javascript webpack react-native expo metro-bundler
我想为世博会分发一个包裹。该包是在 expo SDK36 中构建我的应用程序时创建的。
\n\n像许多博览会依赖项一样,我大量使用.ios.js,.android.js和.web.js扩展。
在导入我在 npm 上分发的源时,解析器仅导入,.js没有任何区别。
作为一个例子,这个包应该与 expo 一起使用:
\n\n
这是@expo/webpack-config已解决的扩展:
[\n ".web.expo.ts",\n ".web.expo.tsx",\n ".web.expo.mjs",\n ".web.expo.js",\n ".web.expo.jsx",\n ".expo.ts",\n ".expo.tsx",\n ".expo.mjs",\n ".expo.js",\n ".expo.jsx",\n ".web.ts",\n ".web.tsx",\n ".web.mjs",\n ".web.js",\n ".web.jsx",\n ".ts",\n ".tsx",\n ".mjs",\n ".js",\n ".jsx",\n ".json",\n ".wasm"\n]\nRun Code Online (Sandbox Code Playgroud)\n\n但事实并非如此,我必须通过在源代码中添加后缀来手动导入.web。
如何配置expo我的分布式包,以便在从 导入源时能够为每个环境导入正确的源node_modules?
我错误地期望我的扩展能够与main我的领域一起工作package.json,我已经使用以下命令重新配置了我的存储库:
/home/dka/workspace/github.com/yeutech-lab/react-cookiebot/src\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CookieBot.js\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CookieBot.native.js\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 index.js\nRun Code Online (Sandbox Code Playgroud)\n\n.native.js,所以我的reactjs用户(不仅是expo和react-native用户)将.js默认导入该文件.web.js、.ios.js、.android.is和.native.js。.js.web.js而不是(1),我的反应用户将不可能像(2)那样做,在这种情况下:他们在项目中配置反应本机扩展的方式是什么?config.resolve.extensions)关于主要领域
在节点模块中,您可以通过删除package.json.
- "main": "index.js"
+ "main": "index"
Run Code Online (Sandbox Code Playgroud)
不过,我建议不要这样做,因为捆绑器分辨率在 Webpack 和 Metro 之外的捆绑器中可能会有所不同。让一个“主”文件重新导出其他平台特定模块的内容会更安全(看来这就是您在编辑中所做的,但为了完整性,我将在此处保留解释):
index.js
export * from './module';
Run Code Online (Sandbox Code Playgroud)
module.js香草JSmodule.web.jsReact Native 网页版module.native.js反应本机
- 如果我确实更喜欢
.web.js而不是(1),我的反应用户将不可能像(2)那样做,在这种情况下:他们在他们的项目中配置反应本机扩展的方式是什么?
重要的是要记住,.web.js即使该项目不是 React Native Web 项目,仍然可以解决这个问题。Create React App 解决了.web.js每个项目的扩展问题。
config.resolve.extensions在 Web 上,用户可以通过修改Webpack 配置字段来配置其平台扩展。在世博会上,这可以通过运行来完成expo customize:web。
- 配置本机扩展
这可以通过编辑项目的 Metro 配置来完成:Example。
| 归档时间: |
|
| 查看次数: |
1690 次 |
| 最近记录: |