我们使用一个完整的TypeScript mono存储库,其结构如下:
project
| - packages
| - common
| - appsCommon
| - Next.js-App
| - React-Native-App
| - Google-Cloud-Functions到目前为止,common和appsCommon都是从TypeScript编译到ES6中的。
常见包的tsconfig.json如下:
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"module": "commonjs",
"outDir": "lib",
"strict": true,
"target": "es6",
"jsx": "react"
},
"compileOnSave": true,
"include": ["src"]
}常见包的packages.json如下:
{
"name": "@project/common",
"version": "0.0.10",
"main": "lib/index.js",
"types": "lib/index.d.ts",
"files": [
"lib/**/*"
],
...
}这对于发布到npm以供云函数使用的Common是必需的,但对于直接由Next.js和React Native应用程序使用的appsCommon则不需要。
热重新加载也应适用于项目内的常见情况。
当前全局packages.json如下所示:
{
"name": "project",
"private": true,
"workspaces": {
"packages": [
"packages/*"
],
"nohoist": [
"**react**",
"**react-native**",
...
]
},
...
}当前lerna.json如下所示:
{
"packages": [
"packages/*"
],
"npmClient": "yarn",
"version": "0.0.10",
"useWorkspaces": true,我猜这不仅仅是在公共package.json中将lib更改为src的问题,当我这样做时,VS代码会给模块加下划线:"not found“。此外,我知道云函数可以使用原始typescript,但我不知道是否可以调用未编译的typescript包。
发布于 2020-08-31 22:59:14
您可以使用sync-monorepo-packages utility来编排模块的编译,因为它具有通过learna.json自动发现包的功能,我看到您已经在使用它了。
关于使用热重新加载的目标,我发现了这个github issue,其中强调了热重新加载对于生产环境并不理想,但对于开发目的非常有用。
https://stackoverflow.com/questions/63614219
复制相似问题