Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

359
Views
Escribiendo módulos npm en TypeScript

Estoy trabajando en mi primer módulo npm. Trabajé brevemente con TypeScript antes y un gran problema fue que para muchos módulos no había archivos de definición disponibles. Así que pensé que sería una buena idea escribir mi módulo en TypeScript.

Sin embargo, no puedo encontrar ninguna información sobre la mejor manera de hacerlo. Encontré esta pregunta relacionada " ¿Puedo escribir el paquete npm en CoffeeScript? " donde las personas sugieren publicar solo los archivos JavaScript. Pero a diferencia de los archivos CoffeeScript, los archivos TypeScript pueden ser realmente útiles si se usan dentro de una aplicación TypeScript.

¿Debo incluir archivos TypeScript al publicar un módulo npm, o solo debo publicar los archivos JavaScript y proporcionar los archivos .d.ts generados a DefinitelyTyped?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Aquí hay un módulo de nodo de muestra escrito en TypeScript: https://github.com/basarat/ts-npm-module

Aquí hay un proyecto TypeScript de muestra que usa este módulo de muestra https://github.com/basarat/ts-npm-module-consume

Básicamente necesitas:

  • compilar con commonjs y declaration:true
  • generar un archivo .d.ts

Y luego

  • Haga que su ide lea el .d.ts generado.

Atom-TypeScript solo proporciona un buen flujo de trabajo en torno a esto: https://github.com/TypeStrong/atom-typescript#packagejson-support

over 4 years ago · Santiago Trujillo Report

0

Con TypeScript 4.x, TypeScript 3.x o TypeScript 2.x, los siguientes pasos describen lo que debe hacer para crear una biblioteca (paquete npm) con TypeScript:

  • Crea tu proyecto como lo harías normalmente (con pruebas y todo)
  • Agregue declaration: true a tsconfig.json para generar tipos.
  • Exportar la API a través de un index.ts
  • En el package.json , apunte a sus tipos generados. Por ejemplo, si su outDir es dist , agregue "types": "dist/index.d.ts" a su paquete json.
  • En el package.json , apunte a su archivo de entrada principal. Por ejemplo, si su outDir es dist y el archivo de entrada principal es index.js , agregue "main": "dist/index.js" a su paquete.json.
  • En el archivo package.json , incluya en la lista blanca los archivos que le gustaría enviar a npm: files: ["/dist"] . Un enfoque alternativo es la lista negra con .npmignore , pero es más difícil mantenerse actualizado.
  • Publicar en npm con npm publish . Use las especificaciones de semver para las actualizaciones (parche/corrección de errores parche de npm version patch , adiciones no npm version minor de npm, cambios de api npm version major )

Dado que me tomó un tiempo examinar todos los recursos obsoletos sobre este tema en Internet (como el que se encuentra en esta página...), decidí envolverlo en una biblioteca de cómo escribir un mecanografiado con un ejemplo mínimo de trabajo actualizado.

over 4 years ago · Santiago Trujillo Report

0

Esta es una respuesta más reciente usando TypeScript 1.8.10:

La estructura de mi proyecto es:

 | |--- src |--- test |--- dist <= My gulp file compiles and places the js, sourcemaps and .d.ts files here | |--- src | |--- test |--- typings .gitignore .npmignore gulpfile.js package.json README.md tsconfig.json tslint.json typings.json

Agregué lo siguiente en .npmignore para evitar incluir archivos extraños y mantener el mínimo indispensable para que el paquete se importe y funcione:

 node_modules/ *.log *.tgz src/ test/ gulpfile.js tsconfig.json tslint.json typings.json typings dist/test

Mi .gitignore tiene:

 typings # ignore .js.map files *.js.map *.js dist

Mi package.json tiene:

 "main": "dist/src/index.js", "typings": "dist/src/index.d.ts",

Ahora ejecuto: npm pack

El archivo resultante (cuando se descomprime) tiene la siguiente estructura:

 | |--- dist | |--- src | | | index.js | index.js.map | index.d.ts | package.json README.md

Ahora voy al proyecto donde quiero usar esto como biblioteca y escribo: npm install ./project-1.0.0.tgz

Se instala con éxito.

Ahora creo un archivo index.ts en mi proyecto donde acabo de instalar npm import Project = require("project");

Project. me da las opciones de Intellisense, que era el objetivo de todo este ejercicio.

Espero que esto ayude a alguien más a usar sus proyectos TypeScript npm como bibliotecas internas en sus proyectos más grandes.

PD: Creo que este enfoque de compilar proyectos en módulos npm que se pueden usar en otros proyectos recuerda al .dll en el mundo .NET . Bien podría imaginar proyectos organizados en una Solución en VS Code donde cada proyecto produce un paquete npm que luego se puede usar en otro proyecto en la solución como una dependencia.

Dado que me tomó bastante tiempo resolver esto, lo he publicado en caso de que alguien se quede atrapado aquí.

También lo publiqué por un error cerrado en: https://github.com/npm/npm/issues/11546


Este ejemplo ha sido subido a Github: vchatterji/tsc-seed

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!