微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在从外部项目上一级导入类型时尝试构建 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 举报,一经查实,本站将立刻删除。