假设我使用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.ts
与tsmvc.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 /目录引用索引,并且我发现“在环境模块减速中导入或导出减速不能通过相对名称引用模块。”
答案 0 :(得分:0)
而不是相对路径?
仅限于最新的(不稳定)版本的TypeScript。您需要配置np.where
https://github.com/Microsoft/TypeScript/issues/5039