Esta é uma resposta mais recente usando TypeScript 1.8.10:
A estrutura do meu projeto é:
|
|--- 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
Eu adicionei o seguinte .npmignore
para evitar a inclusão de arquivos estranhos e manter o mínimo para ter o pacote importado e funcionando:
node_modules/
*.log
*.tgz
src/
test/
gulpfile.js
tsconfig.json
tslint.json
typings.json
typings
dist/test
Meu .gitignore
tem:
typings
# ignore .js.map files
*.js.map
*.js
dist
Meu package.json
tem:
"main": "dist/src/index.js",
"typings": "dist/src/index.d.ts",
Agora eu corro:
npm pack
O arquivo resultante (quando descompactado) tem a seguinte estrutura:
|
|--- dist
| |--- src
| |
| index.js
| index.js.map
| index.d.ts
|
package.json
README.md
Agora vou para o projeto em que desejo usar isso como uma biblioteca e digito:
npm install ./project-1.0.0.tgz
É instalado com sucesso.
Agora eu crio um arquivo index.ts
no meu projeto onde acabei de instalar o npm
import Project = require("project");
A digitação Project.
me dá as opções do Intellisense, que foi o objetivo de todo este exercício.
Espero que isso ajude alguém a usar seus projetos npm do TypeScript como bibliotecas internas em seus projetos maiores.
PS: Eu acredito que esta abordagem de compilação de projetos para módulos NPM que podem ser usadas em outros projetos é uma reminiscência do .dll
no .NET
mundo. Eu poderia muito bem imaginar projetos sendo organizados em uma Solução no Código VS onde cada projeto produz um pacote npm que pode então ser usado em outro projeto na solução como uma dependência.
Como demorei um bom tempo para descobrir isso, eu postei para o caso de alguém estar preso aqui.
Eu também postei para um bug fechado em:
https://github.com/npm/npm/issues/11546
Este exemplo foi enviado ao Github: vchatterji / tsc-seed