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 .npmignorepara evitar incluir archivos extraños y mantener lo mínimo 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 .gitignoretiene:
typings
# ignore .js.map files
*.js.map
*.js
dist
Mi package.jsontiene:
"main": "dist/src/index.js",
"typings": "dist/src/index.d.ts",
Ahora corro:
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.tsen mi proyecto donde acabo de instalar el npm
import Project = require("project");
Escribir Project.me da las opciones de Intellisense, que fue el objetivo de todo este ejercicio.
Espero que esto ayude a alguien más a usar sus proyectos npm de TypeScript 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 .dlldel .NETmundo. Bien podría imaginar que los proyectos se organizan 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.
Como me tomó bastante tiempo resolver esto, lo publiqué en caso de que alguien se quede atascado aquí.
También lo publiqué por un error cerrado en:
https://github.com/npm/npm/issues/11546
Este ejemplo se ha subido a Github: vchatterji / tsc-seed