Gui*_*rme 6 typescript reactjs ts-loader yarnpkg yarn-workspaces
我在使用纱线工作区和打字稿设置 React 项目时遇到问题。我的文件夹结构是:
-root
-package.json
-workspaces
-web
-common
Run Code Online (Sandbox Code Playgroud)
我的package.json文件是:
{
"name": "my-project-name",
"private": true,
"workspaces": [
"workspaces/web",
"workspaces/common"
],
"moduleFileExtensions": [
"ts",
"tsx",
"js",
"jsx",
"json",
"node"
]
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:当我web从common项目导入文件时,如果它是一个.js文件,它可以正常工作,但TypeError: Object(...) is not a function在使用.ts或.tsx文件时失败。
关于我可能缺少什么的任何想法?
我建议采用以下文件层次结构:
- root
- package.json
- tsconfig.json
- packages
- common
- package.json
- tsconfig.json
- services
- web
- package.json
- tsconfig.json
Run Code Online (Sandbox Code Playgroud)
文件夹中的所有内容都packages可以导入。服务是您不想在其他项目中导入的“叶”项目。
以此为基础,您的根 package.json 应该像这样设置:
- root
- package.json
- tsconfig.json
- packages
- common
- package.json
- tsconfig.json
- services
- web
- package.json
- tsconfig.json
Run Code Online (Sandbox Code Playgroud)
然后,您还需要告诉 typescript 如何解析导入。
在根 tsconfig.json 中,设置以下内容:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@myproject/*": ["packages/*/src"]
},
}
Run Code Online (Sandbox Code Playgroud)
确保每个 tsconfig 都扩展了这个基础"extends": "../../tsconfig.json"
在内部web/package.json或任何需要导入 common 的包中,将 common 定义为依赖项:
{
[...]
"dependencies": {
"@myproject/common": "*",
}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果您的公共 package.json 的名称设置为 `"@myproject/common",您可以使用以下命令将代码导入到 web 中:
{
"name": "my-project-name",
"private": true,
"workspaces": [
"packages": [
"packages/*",
"services/**/*"
],
],
}
Run Code Online (Sandbox Code Playgroud)
我建议您也使用 learn 和这样的设置。您还需要稍微修改一下构建管道,因为您要导入 /web 文件夹外部的 /web 内的文件。有关更完整的示例,您可以查看此存储库: https: //github.com/NiGhTTraX/ts-monorepo
| 归档时间: |
|
| 查看次数: |
734 次 |
| 最近记录: |