我想启动一个同时具有网络和响应界面的新应用。
我决定将所有与业务相关的代码(与环境无关)移入第三个程序包(又称为sdk),我可以在react和react native之间共享它们。
所以我的项目现在有4个模块
服务器-nodejs Express API。
有没有实现这种结构的标准方法?
我大概很想
**面临的挑战**
在同时处理sdk和Web模块时如何避免重新构建步骤?
答案 0 :(得分:4)
Yarn workspace听起来像是您正在考虑的项目结构的好方法。
您可以拥有一个db.collection.aggregate([
{$group : {
_id : {
mart_code : '$mart_code',
director : '$director',
category : '$category'
},
money: {$sum : '$money'}
}},
{$group : {
_id : '$_id.mart_code',
directorList : {$push : {
director: "$_id.director",
money: '$money'
}},
categoryList : {$push : {
category: "$_id.category",
money: '$money'
}}
}},
{$group : {
_id : null,
martList : {$push : {
mart_code : '$_id',
directorList : '$directorList',
categoryList : '$categoryList'
}}
}},
{$project : {
_id : 0,
martList : '$martList'
}}
])
目录,您可以在其中添加项目:
packages
现在,您可以使用/packages
- web
- sdk
- native
使用babel来监视每个程序包的代码更改,yarn工作区将负责将它们链接在一起。
如果babel监视程序正在运行,则您对sdk所做的任何更改都将同时反映到babel -w
和web
软件包中。您也可以使用concurrently之类的东西将所有这些结合在一起,以使用单个命令来激发观察者。
我与他人合着了一个开源库,我们在其中遵循类似的结构,您可以检查here。该项目的不同之处在于我们的redux逻辑位于单独的存储库中。
为了使笑话生效,您可以在native
文件中添加一个test
env,该文件会转换模块。因此,您可以添加两个不同的环境,例如.babelrc
(可转换为commonjs模块)和test
环境(可保留ES模块),以便您的用户可以利用摇树的优势。 Example config
希望这为您提供了一个很好的起点:)
答案 1 :(得分:-1)
您可以尝试这样的Project结构:
| package.json
|- node_modules
|- Web
| package.json
|- SDK
| package.json
|- Mobile
| package.json
|- Server
| package.json
然后,您可以将所有内容安装在根文件夹中并设置NODE_PATH env变量:
export NODE_PATH='yourdir'/node_modules