展会包裹如何发放?(.web.js、.js 配置)

Dim*_*iwa 5 javascript webpack react-native expo metro-bundler

我想为世博会分发一个包裹。该包是在 expo SDK36 中构建我的应用程序时创建的。

\n\n

像许多博览会依赖项一样,我大量使用.ios.js,.android.js.web.js扩展。

\n\n

在导入我在 npm 上分发的源时,解析器仅导入,.js没有任何区别。

\n\n

作为一个例子,这个包应该与 expo 一起使用:

\n\n

图像

\n\n

这是@expo/webpack-config已解决的扩展:

\n\n
[\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]\n
Run Code Online (Sandbox Code Playgroud)\n\n

但事实并非如此,我必须通过在源代码中添加后缀来手动导入.web

\n\n

如何配置expo我的分布式包,以便在从 导入源时能够为每个环境导入正确的源node_modules

\n\n

编辑

\n\n

我错误地期望我的扩展能够与main我的领域一起工作package.json,我已经使用以下命令重新配置了我的存储库:

\n\n
/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\n
Run Code Online (Sandbox Code Playgroud)\n\n

问题 :

\n\n
    \n
  1. 我已经使用过.native.js,所以我的reactjs用户(不仅是expo和react-native用户)将.js默认导入该文件
  2. \n
  3. 由于(1),其他反应用户(无论是反应本机还是博览会)都不需要某种额外的配置来支持反应本机扩展.web.js.ios.js.android.is.native.js.js
  4. \n
  5. 如果我确实更喜欢.web.js而不是(1),我的反应用户将不可能像(2)那样做,在这种情况下:他们在项目中配置反应本机扩展的方式是什么?
  6. \n
  7. 对于所有react-native用户,我可以知道在本机项目中可以在哪里配置扩展吗?(我相信web项目可以在webpack中配置config.resolve.extensions
  8. \n
\n

Eva*_*con 3

关于主要领域

在节点模块中,您可以通过删除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香草JS
  • module.web.jsReact Native 网页版
  • module.native.js反应本机
  1. 如果我确实更喜欢.web.js而不是(1),我的反应用户将不可能像(2)那样做,在这种情况下:他们在他们的项目中配置反应本机扩展的方式是什么?

重要的是要记住,.web.js即使该项目不是 React Native Web 项目,仍然可以解决这个问题。Create React App 解决了.web.js每个项目的扩展问题。

config.resolve.extensions在 Web 上,用户可以通过修改Webpack 配置字段来配置其平台扩展。在世博会上,这可以通过运行来完成expo customize:web

  1. 配置本机扩展

这可以通过编辑项目的 Metro 配置来完成:Example