【问题标题】:Bundle a React native component only仅捆绑一个 React 原生组件
【发布时间】:2017-10-04 12:01:05
【问题描述】:

有没有办法捆绑/缩小和混淆单个 React Native 组件并让它像正常一样访问(即import SomeComponent from 'some-component'),而不包括react-native 和其他node_modules

我希望能够通过 NPM 分发这个组件,并让它与其他已经使用 react-native 的项目集成。所以在这种情况下,当some-componentreact-native 导入说View 时,我希望它访问主项目的react-native

【问题讨论】:

    标签: javascript react-native webpack ecmascript-6 babeljs


    【解决方案1】:

    反正就是这样。

    由于 npm 3.0.0 依赖项现在安装到平面树中(类似于 yarn)。

    平坦,平坦,平坦!

    您的依赖项现在将安装到最大平面。在可能的情况下,您的所有依赖项及其依赖项以及它们的依赖项都将安装在您项目的 node_modules 文件夹中,没有嵌套。只有当两个(或更多)模块具有冲突的依赖关系时,您才会看到相互嵌套的模块。

    这意味着在您的依赖项需要不同版本的 react-native 之前,它们都将使用相同的副本。

    为了进一步控制,您可以使用npm-shrinkwrap 锁定包的依赖版本。

    【讨论】:

    • 我说的是一个单一的 react 原生组件,并且只捆绑它,使用混淆,不包含其他依赖项。你有如何做到这一点的例子吗?
    • 依赖时必须包含依赖项。你有理由不这样做吗?
    • 包含我的意思是没有它们存在于 JS 包中。我对这个问题进行了编辑,希望能进一步澄清我的意思......请重新阅读(我知道 NPM 3,但我的问题涉及不同的主题。)
    • 我对你的理解稍微好一些,但仍不完全。 “让它们出现在 JS 包中”是什么意思?依赖项未与您的 npm 模块捆绑在一起。要使用,例如View,您绝对必须使用import {View} from 'react-native'。您还应该将 react-native 添加到您的 package.json 依赖项中。但是,react-native 没有捆绑在包中。 npm 将在安装包时安装 react-native,但前提是它尚未安装。你能解释一下你到底想阻止什么,以便我更好地理解你吗?
    • 当然。所以我想做的是从现有的 RN 应用程序中取出一个组件,混淆它及其我们的组件,但仍然让它可以与其他反应原生应用程序一起使用。这里的关键是混淆——所以它会保留 import { View } from "react-native" 而不是从 "01" 导入 import J。我可以使用 react-native bundle CLI 来完成后者,但即便如此,它也包含 bundle 中的所有 node_modules。需要一种方法来做前者,同时保留对依赖项的明确引用。
    猜你喜欢
    • 2019-10-02
    • 1970-01-01
    • 2018-12-06
    • 2019-12-12
    • 1970-01-01
    • 2012-06-10
    • 2017-04-22
    • 2021-05-08
    • 2017-07-31
    相关资源
    最近更新 更多