Cómo crear paquete de NPM con archivos de definición?

Alina Gasmus:

Cómo crear un paquete con archivos de definición de la NGP, donde declararon sólo interfaces de *.tsarchivos.

Supongamos que tenemos dos interfaces y una clase defination:

export interface A {
 id: number;
}

export interface B {
 name: string;
}

export class C {
}

Necesito que empaquetar estos *.tsarchivos en la NGP paquete, cómo hacerlo? ¿Debo exportar index.ts?

Mi package.jsones:

{
  "name": "npm",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

Mi tsconfig.jsones:

"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   
}

En el interior index.tshay:

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

¿Dónde './a', './b', './c'está ficheros con declaraciones de interfaces y clases.

Cuando construyo al index.jsarchivo usando el comando: tsc index.tsentonces no puedo obtener acceso a las interfaces utilizando el módulo index.jsen otros proyectos (NPM instalar)

Shaun Luttinen:

Para empaquetar los tipos con su paquete, hay dos cosas específicas para que lo haga:

  1. Establecer "declaration"en tsconfig.json. Esto le dice mecanografiado para generar *.d.tsarchivos.
  2. Establecer "types"en package.json. Esto le indica dónde encontrar mecanografiado generados *.d.tsarchivos.

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"
  }
}

Aquí es un ejemplo de trabajo para usted en GitHub . Todos los datos mencionados, y más están ocultos en la documentación .

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=370165&siteId=1
Recomendado
Clasificación