在从外部项目上一级导入类型时尝试构建 Firebase 函数项目 `tsc` 编译后丢失文件夹结构

问题描述

很抱歉问这么长的问题,但项目结构问题/错误有点难以解释。

我有一个 Next.js 项目,这是我的根项目。这是一个 Typescript 项目,所以它有自己的 tsconfig.json

这是基本结构:

> app    // APP COMPONENTS
> pages  // NEXT.JS PAGES
> types  // SOME GLOBAL TYPES FOR THE PROJECT
firebase.json
firestore.rules
storage.rules
tsconfig.json

我需要为这个项目添加功能。所以我遵循了以下文档:

https://firebase.google.com/docs/functions/typescript

基本上我已经输入了 firebase init functions 并按照 CLI 中的说明进行操作。

然后它创建了一个 functions 如下(> 符号表示一个文件夹):

> app

> functions  // NEW FOLDER FOR THE FUNCTIONS PROJECT
  > src
    index.ts
  package.json
  tsconfig.json

> pages
> types
firebase.json
firestore.rules
package.json
storage.rules
tsconfig.json

现在看到 functions 文件夹有自己的 tsconfig.json 文件和自己的 package.json 文件。从本质上讲,它是一个自己的项目。我同意这个想法。

这是创建的 tsconfig.json 文件

{
  "compilerOptions": {
    "module": "commonjs","noImplicitReturns": true,"noUnusedLocals": true,"outDir": "lib","sourceMap": true,"strict": true,"target": "es2017"
  },"compileOnSave": true,"include": [
    "src"
  ]
}

它还为我的 predeploy 文件添加一个 firebase.json 钩子。

"functions": {
  "predeploy": "npm --prefix \"$RESOURCE_DIR\" run build"
}

这是在部署前构建 .ts 文件所必需的。它将按照 functions/srcfunctions/lib 文件夹中的文件构建到 tsconfig.json 文件夹。

基本的 helloWorld 示例构建和部署都很好。我已将一些文件添加functions 文件夹中,并且一切正常。

functions/src 上查看我的文件

enter image description here

查看 functions/lib 上的编译文件

enter image description here

正如您所期望的那样,它的结构和文件完全相同。

问题

当我从“外部”根项目导入类型时,问题就开始了。例如:

我继续 functions/src/index.ts 并执行以下操作:

import SomeType from "../../types/whatever"

// USE THE TYPE HERE

现在看看构建结果是什么(即:functions/lib 文件夹):

enter image description here

现在它基本上在 functions 文件夹下创建了另一个 lib。它也基本上从我的 types 文件夹中复制文件。我不知道它为什么这样做。

我完全没想到。我想使用外部根项目中的类型,但不会弄乱生成functions/lib 文件夹的结构。

会发生什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)