1

我在代码存储库 (A) 中定义了一组函数。代码库 A 具有以下结构,我的类 objectController 在 'objectController.ts' 中定义:

  • 源代码
    • 索引.ts
    • 对象控制器.ts

如何在另一个代码库 (B) 中使用 objectController.ts 中定义的函数?

4

1 回答 1

0

我实际上建议尽可能在同一个代码存储库中工作,但这在某些情况下可能是不可避免的

设置源存储库的步骤:

  1. 修改package.json以正确发布包。

    1. 设置一个新name字段来定义包名称在其他 repos 中应该是什么。用特定的用例作为前缀以避免冲突可能是有意义的。

    2. main将字段更新为"dist/Functions.bundle.js"并将字段更新types"src/dist/index.d.ts"

    3. (可选)设置一个description.

  2. 提交package.json更改并在此存储库上发布标签。

  3. 验证检查是否通过。

目标存储库中的步骤:

  1. 导入您的源存储库。

    1. 转到设置 > 工件。

    2. 点击 + 添加

    3. 选择您的源存储库并将其作为后备存储库导入。

  2. package.json。在 下dependencies,添加您在上面的源存储库中设置的包名称(步骤 1.1),并将版本设置为您发布的标签(步骤 2)。

  3. 从您的包中导入任何导出的类,并照常在代码中使用它们。

    1. 注意:您必须在上述步骤 (2) 之后重新启动 Code Assist,才能正确显示新添加的包。

注意事项

  1. 所有代码都必须位于源存储库中的 index.ts 中才能正常工作。

  2. 使用导入包的目标存储库中的单元测试将失败。(这实际上可能是可以修复的,但我没有让它工作)

  3. 您需要确保已将源存储库依赖的所有本体对象和关系导入目标存储库。

  4. 我还在目标存储库中遇到了打字问题。

    1. 错误信息:

       Errors: 
       src/index.ts(6,21): error TS7016: Could not find a declaration file for module '{module_name}'. '{redacted}/repo/functions-typescript/node_modules/{module_name}/dist/Functions.bundle.js' implicitly has an 'any' type.
      
      Try `npm install @types/{module_name}` if it exists or add a new declaration (.d.ts) file containing `declare module '{module_name}';`
      
    2. 解决方案:

      1. 创建一个名为typings.

      2. typings名为index.d.ts.

      3. 在 (2) 中创建的文件中声明如下所示的模块index.d.ts

         declare module '{module_name}';
        
      4. 在元素下添加 (2)index.d.ts中创建的文件的路径。tsconfig.jsontypeRoots

         "typeRoots": [
              "./typings",
              "./node_modules/@types/"
         ]
        
于 2022-02-03T12:30:31.153 回答