Как создать пакет npm с файлами определений? - PullRequest
7 голосов
/ 24 марта 2020

Как создать пакет 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 там is:

import { A } from "./a";
import { B } from "./b";
import { C } from "./c";

Где './a', './b', './c' - файлы с объявлениями интерфейсов и классов.

Когда я собираю его в файл index.js с помощью команды: tsc index.ts, тогда я не могу получить доступ к интерфейсам с использованием модуля index.js в других проектах (npm установка)

Ответы [ 2 ]

1 голос
/ 25 марта 2020

Существует два способа публикации sh определенных файлов:

  1. связывание с вашим пакетом npm,
  2. или публикация в организации @ types на npm.

Вот документация , которая поможет вам с этим

0 голосов
/ 25 марта 2020

Чтобы связать типы с вашим пакетом, есть две определенные c вещи для вас:

  1. Установить "declaration" в tsconfig.json. Это говорит TypeScript для генерации *.d.ts файлов.
  2. Set "types" in package.json. Это сообщает 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"
  }
}

Вот вам рабочий пример на GitHub . Все вышеперечисленное и более подробная информация скрыты в документации .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...