To jest nowsza odpowiedź przy użyciu TypeScript 1.8.10:
Struktura mojego projektu to:
|
|--- 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
Dodałem, co następuje, .npmignore
aby uniknąć dołączania zbędnych plików i zachować minimum niezbędne do zaimportowania i działania pakietu:
node_modules/
*.log
*.tgz
src/
test/
gulpfile.js
tsconfig.json
tslint.json
typings.json
typings
dist/test
Mój .gitignore
ma:
typings
# ignore .js.map files
*.js.map
*.js
dist
Mój package.json
ma:
"main": "dist/src/index.js",
"typings": "dist/src/index.d.ts",
Teraz biegnę:
npm pack
Wynikowy plik (po rozpakowaniu) ma następującą strukturę:
|
|--- dist
| |--- src
| |
| index.js
| index.js.map
| index.d.ts
|
package.json
README.md
Teraz przechodzę do projektu, w którym chcę użyć tego jako biblioteki i wpisuję:
npm install ./project-1.0.0.tgz
Pomyślnie instaluje się.
Teraz tworzę plik index.ts
w moim projekcie, w którym właśnie zainstalowałem npm
import Project = require("project");
Wpisywanie Project.
daje mi opcje Intellisense, które były celem tego całego ćwiczenia.
Mam nadzieję, że pomoże to komuś innemu w używaniu projektów TypeScript npm jako bibliotek wewnętrznych w ich większych projektach.
PS: Uważam, że takie podejście kompilacji projektów do modułów npm, które można wykorzystać w innych projektach, przypomina te znane .dll
na .NET
świecie. Mogę dobrze wyobrazić sobie projekty organizowane w rozwiązaniu w kodzie VS, w którym każdy projekt tworzy pakiet npm, który można następnie wykorzystać w innym projekcie w rozwiązaniu jako zależność.
Ponieważ zajęło mi to sporo czasu, opublikowałem to na wypadek, gdyby ktoś tu utknął.
Opublikowałem go również w związku z zamkniętym błędem na:
https://github.com/npm/npm/issues/11546
Ten przykład został przesłany do Github: vchatterji / tsc-seed