如何使本机构建将资产从node_modules复制到apk?

时间:2019-03-28 14:53:27

标签: react-native assets node-modules

我正在构建一个嵌入WebView的react-native应用程序,以托管一些非本机的react组件。我有一个小的html文件,该文件是WebView的源代码,并且位于android / app / src / main / assets的子文件夹中,据我了解,该文件是将复制到apk的构建文件所在的位置,尽管我认为我需要在另一个位置为IOS提供另一个副本。到目前为止一切都很好...这很有用。

现在,htm文件需要从npm模块中的代码中提取常规的react组件。它包含一个脚本标签,其src需要引用一个文件,该文件位于node_modules的子目录中。我不知道我可以在src中放入任何网址,该网址将直接从node_modules引用该文件并将其复制到apk。简单的解决方案是将文件手动复制到android / app / src / main / assets的同一子文件夹中,并简单地将其名称用作src。尽管可能有更好的方法,但这也可行。

问题:如何自动将文件从node_modules复制到资产? (理想情况下,一种解决方案也适用于IOS,尽管在这一点上,我很高兴拥有一个仅限Android的解决方案。)

我探索了rnpm和react-native链接。我找不到足够的文档,但是看来这种机制只能用于字体。

我尝试将复制命令添加到package.json的启动脚本中,如下所示:

"scripts": {
    "start": "copy/Y node_modules/X/Ybundle.js android/app/src/main/assets/X/Ybundle.js & node node_modules/react-native/local-cli/cli.js start"
},

但是当我运行react-native start-android时,副本没有发生。

我想知道是否可以将某些内容添加到react-native项目的gradle脚本中,但是找不到任何有关在本机生成过程中如何使用它的文档。

1 个答案:

答案 0 :(得分:1)

到目前为止,我发现的最佳解决方案是将一些脚本添加到package.json:

Int??.some(nil)

然后,当我npm运行start-android时,首先发生复制,然后是正常的android启动。