如何使用定义文件创建NPM包,其中仅在*.ts
文件中声明了接口。
假设我们有两个接口和一个类定义:
export interface A {
id: number;
}
export interface B {
name: string;
}
export class C {
}
我需要将这些*.ts
文件打包到npm包中,怎么做?我应该在index.ts
中导出它们吗?
我的package.json
是:
{
"name": "npm",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
我的tsconfig.json
是:
"compilerOptions": {
"target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true
}
index.ts
里面有:
import { A } from "./a";
import { B } from "./b";
import { C } from "./c";
其中'./a', './b', './c'
是带有接口和类声明的文件。
当我使用命令将其构建为index.js
文件时:tsc index.ts
然后我无法访问其他项目中使用模块index.js
的接口(npm安装)
2条答案
按热度按时间sy5wg1nm1#
要将类型与包捆绑在一起,需要做两件特定的事情:
1.**在
tsconfig.json
中将"declaration"
设置为true
。**这将告诉TypeScript生成*.d.ts
文件。1.**在
package.json
中设置"types"
。**这告诉TypeScript在哪里可以找到生成的*.d.ts
文件。tsconfig.json
package.json
这是一个working example for you on GitHub。所有上述和更多细节都隐藏在文档中。
hgc7kmma2#
发布定义文件有两种方法:
1.与您的npm包捆绑,
1.或者发布到npm上的@types组织。
这里是the documentation来帮助你