[英]Sharing code between a Typescript React project and a Typescript Express project
我一直在努力想出一個優雅的解決方案來在兩個彼此密切相關的項目之間共享代碼。
我有一個 React web 應用程序,它只包含所有客戶端代碼,我有一個 Express 應用程序,它為 React web 應用程序提供服務,但它也充當 API。因為我在兩個項目中都使用 Typescript,所以我想重用一些類型。 為此,我創建了一個shared
項目。
我目前的文件夾結構如下:
現在我想將web-app
和server
項目與我的shared
項目鏈接起來,但有一些限制:
npm link
)。我不確定我當前的項目結構是否允許我需要的功能,所以請隨意建議其他文件夾結構。
如果要使用create-react-app
創建Web應用程序,則可以輕松使用NODE_PATH
環境變量來進行絕對導入,而無需創建節點模塊。
web-app
目錄的package.json
相同的級別)創建一個.env
文件package.json
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
您可以將 yarn workspaces 用於這種目的,我為這種配置創建了一個最小的工作樣板: https://github.com/rok-tel/ts-express-react
看一下./packages/shared
文件夾,它被服務器(express)和客戶端(react)消耗
考慮使用 Nx - https://nx.dev/
這是一個很棒的管理 monorepos 的框架。
用於創建共享代碼 package 的文檔:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.