如何引用我在同一项目中编写的库?

时间:2016-02-25 09:35:47

标签: javascript module typescript

假设我使用typescript编写了一个库。以tslint为指导,我的文件夹结构如下所示:

src
   build
   classes
   interfaces
   typings
      packagesIUseInLibrary
      tsd.d.ts
   tsd.json
   tsmvc.ts
test
   examples
      ...
   typings
      tsd.d.ts
   tsd.json

tsmvc.ts是图书馆的“面孔”。它包含我需要暴露给外界的东西。

export * from  "./classes/helper/ApiParser";
export * from  "./classes/helper/ApiRepository";
export * from  "./classes/helper/DefaultApiParser";
export * from  "./classes/helper/List";
export * from  "./interfaces/data/DataRepository";
export * from  "./interfaces/model/Ctor";
export * from  "./interfaces/model/Model";

到目前为止,这么好。现在我需要从测试文件夹中使用库,但似乎我唯一能做的就是:

import {DataRepository, Model} from "../../../../src/tsmvc";

我有什么方法可以修复我的项目,所以我最终可以使用这种语法:

import tsmvc = require("tsmvc");

而不是相对路径?

我已尝试通过切换"declaration": true中的tsconfig.json来生成.d.ts文件。这会导致tsmvc.d.tstsmvc.ts的内容完全相同。然后我尝试引用它如下:

/// <reference path="../../../../src/build/tsmvc.d.ts"/>
import tsmvc = require("tsmvc");

这给了我:Cannot find module tsmvc.

但我的package.json包含:

{
  "name": "tsmvc",
  "typescript": {
    "definition": "./src/tsmvc.ts"
  }
}

所以根据:https://github.com/Microsoft/TypeScript/issues/247,它应该有用。

编辑:

我怀疑它类似于:

  

测试\分型\ tsmvc \ tsmvc.d.ts:

/// <reference path="reference/used/in/library"/>
declare module "tsmvc" {
    import main = require("index");
    export = main;
}

但是我需要从/ src /目录引用索引,并且我发现“在环境模块减速中导入或导出减速不能通过相对名称引用模块。”

1 个答案:

答案 0 :(得分:0)

  

而不是相对路径?

仅限于最新的(不稳定)版本的TypeScript。您需要配置np.where https://github.com/Microsoft/TypeScript/issues/5039