首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在带有Lerna和Yarn工作区的Typescript monorepo中启用热重新加载?

如何在带有Lerna和Yarn工作区的Typescript monorepo中启用热重新加载?
EN

Stack Overflow用户
提问于 2020-08-27 18:38:36
回答 1查看 2.1K关注 0票数 1

我们使用一个完整的TypeScript mono存储库,其结构如下:

代码语言:javascript
复制
project
| - packages
    | - common
    | - appsCommon
    | - Next.js-App
    | - React-Native-App
    | - Google-Cloud-Functions

到目前为止,common和appsCommon都是从TypeScript编译到ES6中的。

常见包的tsconfig.json如下:

代码语言:javascript
复制
{
  "extends": "../../tsconfig.json",
  "compilerOptions": {
    "module": "commonjs",
    "outDir": "lib",
    "strict": true,
    "target": "es6",
    "jsx": "react"
  },
  "compileOnSave": true,
  "include": ["src"]
}

常见包的packages.json如下:

代码语言:javascript
复制
{
  "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如下所示:

代码语言:javascript
复制
{
  "name": "project",
  "private": true,
  "workspaces": {
    "packages": [
      "packages/*"
    ],
    "nohoist": [
      "**react**",
      "**react-native**",
      ...
    ]
  },
  ...
}

当前lerna.json如下所示:

代码语言:javascript
复制
{
  "packages": [
    "packages/*"
  ],
  "npmClient": "yarn",
  "version": "0.0.10",
  "useWorkspaces": true,

我猜这不仅仅是在公共package.json中将lib更改为src的问题,当我这样做时,VS代码会给模块加下划线:"not found“。此外,我知道云函数可以使用原始typescript,但我不知道是否可以调用未编译的typescript包。

EN

回答 1

Stack Overflow用户

发布于 2020-08-31 22:59:14

您可以使用sync-monorepo-packages utility来编排模块的编译,因为它具有通过learna.json自动发现包的功能,我看到您已经在使用它了。

关于使用热重新加载的目标,我发现了这个github issue,其中强调了热重新加载对于生产环境并不理想,但对于开发目的非常有用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63614219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档