我一直试图提出一种优雅的解决方案,以在彼此密切相关的两个项目之间共享代码。
我有一个仅包含所有客户端代码的React Web应用程序,还有一个可以运行React Web应用程序的Express应用程序,但它也充当API。因为我在两个项目中都使用Typescript,所以我想重用某些类型。为此,我创建了一个shared
项目。
我当前的文件夹结构如下:
现在我想将web-app
和server
项目链接到我的shared
项目,但是有一些限制:
npm link
)。 我不确定我当前的项目结构是否允许我需要的功能,因此也可以建议其他文件夹结构。
答案 0 :(得分:0)
如果您使用create-react-app
创建Web应用程序,则可以轻松使用NODE_PATH
环境变量来进行绝对导入,而无需创建节点模块。
.env
目录的package.json
相同的级别)创建web-app
文件NODE_PATH
设置为shared/
(NODE_PATH=shared/
)现在不要做类似的事情
import { editUser } from ‘../../../shared/actions’;
您可以使用
import { editUser } from ‘shared/actions’;
安装eslint-plugin-import
以防止eslint引发导入错误。并将您的.eslintrc
文件更新为
{
"settings": {
"import/resolver": {
"node": {
"moduleDirectory": ["node_modules", "shared/"]
}
}
}
}
将以下内容添加到您的.flowconfig
文件中
[options]
module.system.node.resolve_dirname=node_modules
module.system.node.resolve_dirname=shared