如何使用定义文件创建npm包?

v09wglhw  于 2023-10-19  发布在  其他
关注(0)|答案(2)|浏览(119)

如何使用定义文件创建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安装)

sy5wg1nm

sy5wg1nm1#

要将类型与包捆绑在一起,需要做两件特定的事情:
1.**在tsconfig.json中将"declaration"设置为true。**这将告诉TypeScript生成*.d.ts文件。
1.**在package.json中设置"types"。**这告诉TypeScript在哪里可以找到生成的*.d.ts文件。
tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "strict": true,
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true,
    "declaration": true  <----------------------
  }
}

package.json

{
  "name": "my-package",
  "version": "1.0.0",
  "main": "index.js",
  "types": "index.d.ts", <----------------------
  "license": "ISC",
  "devDependencies": {
    "typescript": "^3.8.3"
  }
}

这是一个working example for you on GitHub。所有上述和更多细节都隐藏在文档中。

hgc7kmma

hgc7kmma2#

发布定义文件有两种方法:
1.与您的npm包捆绑,
1.或者发布到npm上的@types组织。
这里是the documentation来帮助你

相关问题