我已经开始将我的项目转换为打字稿了,同时我决定改进node.js后端之间的代码重用,反应web客户端和本地反应移动客户端。
这是我的项目结构:
├ commons (code shared between backend and frontend, mostly type definitions and utils
├ clients (code shared between web and mobile clients, depends on commons: containers, utils, forms... )
├ backend (express server, depends on commons)
├ web (create-react-app, not ejected, no SSR needed, depends on clients)
├ mobile (react-native client, depends on clients)
到目前为止我尝试过:
rootDirs
或paths
。 Typescript编译器不合并/捆绑输出,因此这意味着我需要支持3种不同的解决方案来合并生成的代码。也不能与我的IDE一起使用。commons
和clients
链接到网络/移动/服务器node_modules
内的包。为此,我必须生成声明,因为它需要公开所有导入(参见this issue)。纱线也不适合,每次安装新的东西时都会删除链接包。commons
和clients
链接到网络,移动设备和后端的源文件夹中的单独源文件夹。这是我在我项目的当前JS版本中使用的。它有效,但它有一些缺点:
我正在寻找一种不太复杂的解决方案(需要在网络/移动/后端方面进行最少的配置)并且能够很好地与Webstorm配合使用。 它现在可能不存在,所以我想听听人们在这里用于类似项目设置的其他解决方案。
答案 0 :(得分:1)
在与你类似的情况下,我做了以下事情:
commons
作为单独的npm package发布。如有必要,您可以将其设为私有。
clients
取决于commons
包,也会发布到npm。再次 - 如果需要私人。
web
和mobile
项目都重用上面创建的npm包。