如何在monorepo中的React Native和Next.js之间共享未编译的打字稿?

问题描述

我已经用Lerna和Yarn Workspaces建立了具有以下结构的monorepo:

project
| - packages
    | - ReactNativeApp
    | - NextJsApp
    | - FirebaseCloudFunctions
    | - Common 
        | - src > source TypeScript
        | - lib > compiled TypeScript > published to npm for reuse by cloud functions in Firebase
    | - AppsCommon
        | - src > source TypeScript
        | - lib > compiled TypeScript

我有几个问题。一个是React Native无法解析符号链接,另一个是从Firebase的错误消息,当从React Native Firebase传输到AppsCommon到ReactNativeApp时,来自Firebase的错误消息发生了改变,但是如果我在ReactNativeApp中复制AppsCommon源TypeScript则不会发生。

我认为我需要使用Yarn Workspaces,因为React Native无法很好地管理符号链接,这使得它的管理极为复杂。据我了解,这可以实现吗?

// replace
import { function } from '@project/appsCommon'
// by:
import { function } from '../../appsCommons'

我还尝试将package.json和tsconfig.json中的slib替换为src,以使其成为未编译的TypeScript软件包,但无法解决。

然后,我与Lerna尝试直接导入其他软件包的src文件夹。可能出什么问题了?

import { function } from '../../../common/src'

也许在React Native中是这样的:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:mergeDexDebug'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
   > java.nio.file.NoSuchFileException: C:\code\Experimental\monorepo\packages\mobile\android\common\build\intermediates\external_file_lib_dex_archives\debug\out

是的... Common中没有android文件,这是正常的,因为它们位于ReactNativeApp中...为什么在这里搜索它React Native ???

是否有创建未编译的TypeScript包的方法?还是处理此用例的简单方法?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...