[英]Typescript: Compile ambient module declarations for publishing to NPM
我正在寻找一些建议,以便为我目前在TypeScript中编写的npm包自动具有TypeScript编译节点(commonjs)环境模块声明。 关于理解让TypeScript为node / commonjs生成环境模块声明的适当方法,我似乎遇到了一些问题。
对于某些背景资料,我们的模块当前是使用作用域npm模块发布的,因此类似“ @ company / module”。 因此,我们要注意的一件事是,为了使打字稿能够解析“作用域”模块,它需要一个完全限定的环境模块名称“ @ company / module”声明,并且它是在命名环境模块的生成上进行的,并且实际上,我们不确定从编译器生成环境模块声明的适当方法。
我们的模块设置与以下示例不太相似。
打字稿
以下代码分别编译为index.js和bar.js。
// ./bar.ts
export class Bar {}
// ./index.ts
import { Bar } from "./bar"
export class Foo {
constructor(private bar: Bar) {}
}
TypeScript声明
以下是我们希望从打字稿编译器生成的理想输出。
// ./index.d.ts
declare module "@company/module/bar" {
export class Bar {}
}
declare module "@company/foo" {
import { Bar } from "@company/module/bar"
export class Foo {
constructor(private bar: Bar)
}
}
直接从TypeScript生成上述声明似乎没有一种简洁明了的方法。 但是,我们已经找到一种解决方法。
以这种方式生成绑定声明时,TS存储库上似乎有几个github问题,但它们似乎是长期存在的问题,下面将对此进行引用。
commonjs软件包的软件包声明文件-(似乎很完美) https://github.com/Microsoft/TypeScript/pull/3159
提案:捆绑TS模块类型定义https://github.com/Microsoft/TypeScript/issues/4434
我正在寻找将TypeScript库的npm声明发布到NPM的其他经验。 欢迎所有建议!
非常感谢
以下是我们希望从打字稿编译器生成的理想输出。
您不需要这样做(或者至少您没有为此提供用例)。
您的输出文件夹,例如/module/bar
应该看起来像:
index.js
<为/module/bar.ts
生成的.js
index.d.ts
<生成.d.ts
为/module/bar.ts
当用户需要@company/module/bar
时,运行时将自动解析为.js
而TypeScript类型系统.d.ts
自动解析为.d.ts
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.