Questa è una risposta più recente che utilizza TypeScript 1.8.10:
La mia struttura del progetto è:
|
|--- 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
ho aggiunto quanto segue in .npmignore
per evitare di includere i file estranei e mantenere il minimo indispensabile per avere il pacchetto importato e di lavoro:
node_modules/
*.log
*.tgz
src/
test/
gulpfile.js
tsconfig.json
tslint.json
typings.json
typings
dist/test
mio .gitignore
ha:
typings
# ignore .js.map files
*.js.map
*.js
dist
Il mio package.json
ha:
"main": "dist/src/index.js",
"typings": "dist/src/index.d.ts",
Ora scappo: npm pack
Il file risultante (quando decompresso) ha la seguente struttura:
|
|--- dist
| |--- src
| |
| index.js
| index.js.map
| index.d.ts
|
package.json
README.md
Ora vado al progetto in cui voglio usare questo come una libreria e tipo: npm install ./project-1.0.0.tgz
Si installa correttamente.
Ora crea un file index.ts
nel mio progetto in cui ho appena installato il NPM import Project = require("project");
Digitando Project.
mi dà le opzioni Intellisense che era il punto di tutta questa esercitazione.
Spero che questo aiuti qualcun altro a utilizzare i propri progetti npm TypeScript come librerie interne nei loro progetti più grandi.
PS: Credo che questo approccio di compilazione progetti NPM moduli che possono essere utilizzati in altri progetti ricorda il .dll
nel mondo .NET
. Potrei benissimo immaginare i progetti organizzati in una soluzione in VS Code in cui ogni progetto produce un pacchetto npm che può quindi essere utilizzato in un altro progetto nella soluzione come dipendenza.
Poiché ho impiegato un bel po 'di tempo per capirlo, l'ho postato nel caso qualcuno fosse bloccato qui.
ho anche postato per un bug chiuso a: https://github.com/npm/npm/issues/11546
Questo esempio è stato caricato su Github: vchatterji/tsc-seed
Note utili: Ho scritto il progetto, [copee] (https://github.com/styfle/copee), insieme a un [post di blog] (https://medium.com/@styfle/es6-modules -oggi-con-dattiloscritto-22969cd360f0) per guidare l'utente attraverso la configurazione di un progetto TS per emettere definizioni di tipo insieme a obiettivi CJS ed ESM prima di pubblicare su npm. Ciò massimizzerà l'utilizzo con node.js e browser in futuro. – styfle