Dies ist eine neuere Antwort mit TypeScript 1.8.10:
Meine Projektstruktur ist:
|
|--- 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
Ich habe Folgendes hinzugefügt .npmignore
, um zu vermeiden, dass überflüssige Dateien eingeschlossen werden, und das Minimum zu halten, damit das Paket importiert wird und funktioniert:
node_modules/
*.log
*.tgz
src/
test/
gulpfile.js
tsconfig.json
tslint.json
typings.json
typings
dist/test
Mein .gitignore
hat:
typings
# ignore .js.map files
*.js.map
*.js
dist
Mein package.json
hat:
"main": "dist/src/index.js",
"typings": "dist/src/index.d.ts",
Jetzt renne ich:
npm pack
Die resultierende Datei (beim Entpacken) hat die folgende Struktur:
|
|--- dist
| |--- src
| |
| index.js
| index.js.map
| index.d.ts
|
package.json
README.md
Jetzt gehe ich zu dem Projekt, in dem ich dies als Bibliothek verwenden möchte, und tippe:
npm install ./project-1.0.0.tgz
Es wird erfolgreich installiert.
Jetzt erstelle ich eine Datei index.ts
in meinem Projekt, in der ich gerade die npm installiert habe
import Project = require("project");
Durch das Tippen habe Project.
ich die Intellisense-Optionen, um die es in dieser ganzen Übung ging.
Ich hoffe, dies hilft jemand anderem dabei, seine TypeScript npm-Projekte als interne Bibliotheken in größeren Projekten zu verwenden.
PS: Ich glaube, dass dieser Ansatz, Projekte zu npm-Modulen zu kompilieren, die in anderen Projekten verwendet werden können, an den .dll
in der .NET
Welt erinnert. Ich könnte mir gut vorstellen, dass Projekte in einer Lösung in VS Code organisiert werden, in der jedes Projekt ein npm-Paket erstellt, das dann in einem anderen Projekt in der Lösung als Abhängigkeit verwendet werden kann.
Da ich ziemlich viel Zeit gebraucht habe, um das herauszufinden, habe ich es veröffentlicht, falls jemand hier festsitzt.
Ich habe es auch für einen geschlossenen Fehler gepostet:
https://github.com/npm/npm/issues/11546
Dieses Beispiel wurde auf Github hochgeladen: vchatterji / tsc-seed