【发布时间】:2018-06-07 15:12:48
【问题描述】:
我刚刚发布了一个用 typescript 编写的 npm package。目前,我很难获得打字稿(webback 和 vscode)识别的定义。到目前为止唯一有效的解决方案是创建一个文件夹,其定义在 node_modules/@types
简而言之,这是我的包设置:
tsconfig.json
{
"compilerOptions": {
...
"outDir": "./lib/",
"declaration": true,
"declarationDir": "./src/",
}
}
package.json
{
...
"types": "./index.d.ts",
}
index.d.ts
/// <reference path="src/nano-data-binding.d.ts" />
src/nano-data-binding.d.ts
我将它保存在 /src 中,因为它是自动生成的,我无法控制导入的路径。此外,如果我尝试仅使用 declare var ... 而不使用 import export 语句来获取脚本而不是模块。
import { StringOrHTMLElement } from './interfaces/nano-data-binding';
export declare function nanoBind(parent: HTMLElement, ...selectors: StringOrHTMLElement[]): HTMLElement[];
export declare function nanoBindAll(parent: HTMLElement, ...selectors: string[]): HTMLElement[];
请随意安装包,也许只是某个地方的一个小错误。基本上我想将nanoBind() 和nanoBindAll() 声明为全局变量。
编辑
我尝试过的其他东西。没有任何效果。
package.json - Npm 包
{
...
"types": "lib/nano-data-binding.d.ts",
"typings": "lib/nano-data-binding.d.ts",
"typescript": {
"definition": "lib/nano-data-binding.d.ts"
},
}
tsconfig.json - 本地项目
{
...
"files": [
"node_modules/nano-data-binding/lib/nano-data-binding.d.ts"
]
}
【问题讨论】:
-
顺便说一句,
/// <reference用于全局脚本文件,作为一个包,您不会使用该语法。只需import '...'。 -
我在发布之前已经尝试了所有这些建议,我指向的是实际文件。我也尝试使用
typings。以及其他各种事情。它只是拒绝注册为定义。定义肯定在包里。 -
我一直在查看其他软件包,试图弄清楚我是否做错了什么。没有什么突出的。除了等待错误之外,有没有其他方法可以确认接口已加载?
-
你能展示一下 nano-data-binding.d.ts 的样子吗?它应该是自动的,除了 package.json 中的
types/typings: ...之外,您无需执行任何操作。例如,请参阅我的任何包裹。例如color-map
标签: typescript npm