一种仅链接字体反应本机的方法

问题描述 投票:0回答:7

我正在使用 React Native,我只想链接我的字体而不是其他。

我正在使用react-native-maps,它在文档中特别指出“不要使用

react-native link

在我看来,我看到人们说要做

react-native link
来链接字体,但我想知道是否有正确的语法来链接字体,例如:

react-native link ./assets/fonts
还是什么?这样它就不会链接我所有其他库

react-native react-native-maps
7个回答
14
投票

您可以为

react-native link
提供
package.json
中不存在的参数/名称 - 这将导致命令的任务列表仅包含 链接资产任务

所以

react-native link ./assets/fonts
不是一个有效的命令,但它应该可以工作。

请记住,您需要根据 Hamed 的回答在 package.json 中指定字体目录。


10
投票

有一个合适的包称为

react-native-assets
,它仅链接和取消链接资产。节省了我一些手动链接的时间。

https://www.npmjs.com/package/react-native-asset


10
投票

我将手动链接它们。不过,这对

react-native-maps
来说是一个非常奇怪的要求。几乎所有react-native中的独立库都需要链接。

如果其他人有更好的答案,请告诉我。

https://medium.com/@kswanie21/custom-fonts-in-react-native-tutorial-for-ios-android-76ceeaa0eb78

^ 我知道堆栈溢出不喜欢链接,但有很多步骤和图像。

编辑

很酷的事情,如果你这样做

react-native link <specific-library-name-here>
,那么react-native将首先链接你的资产,然后链接该特定的库。因此,如果您只想链接字体,您可以通过链接一些特定的库来实现。

编辑2

如果您只想链接您的资产文件夹,请尝试

react-native link "package-that-does-not-exist"
,它仍然会链接您的资产而不链接其他任何内容。


7
投票

如果 React Native 版本≥ 0.60

在项目根目录下创建文件

react-native.config.js
并添加以下代码

module.exports = {
  project: {
    ios: {},
    android: {}
  },
  assets: ["./assets/fonts/"]
};

和运行命令:

react-native link
npx react-native link


1
投票

有时在这种情况下你已经正确地编写了react-native.config.js;如果您执行此任务,它会对您有所帮助

1-删除react-native.config.js文件

2-再次使用相同的代码创建此文件

3-在控制台中写入react-native链接

然后你可以在 Xcode 中看到资源文件夹,你可以在 info.plist 中看到你的字体并复制捆绑资源


0
投票

虽然 Marek Lisik 的答案对我不起作用,而且我也不想使用第三方库来完成这样的小任务。 因此,我通过将字体文件复制到以下文件夹中进行手动解决以进行Android开发。

your_app\android\app\src\main\assets\fonts

ios 也可以关注E Pierre回答。


0
投票

步骤 - 1:在根文件夹中创建react-native.config.js文件

步骤 - 2:将此代码添加到此文件中

module.exports = {
        project: {
        ios:{},
        android:{}
          },
        assets:['./assets/fonts/'], <--- add the path where fonts are added it should start from the root path 
    }

第 3 步:React-native 版本 < 0.69

运行

npx react-native link
命令

React-native 版本 > 0.69

运行

npx react-native-asset
命令

© www.soinside.com 2019 - 2024. All rights reserved.