Это более свежий ответ с использованием TypeScript 1.8.10:
Моя структура проекта:
|
|--- 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
Я добавил следующее, .npmignore
чтобы избежать включения посторонних файлов и сохранить минимум для импорта и работы пакета:
node_modules/
*.log
*.tgz
src/
test/
gulpfile.js
tsconfig.json
tslint.json
typings.json
typings
dist/test
У меня .gitignore
есть:
typings
# ignore .js.map files
*.js.map
*.js
dist
У меня package.json
есть:
"main": "dist/src/index.js",
"typings": "dist/src/index.d.ts",
Сейчас бегу:
npm pack
Результирующий файл (в распакованном виде) имеет следующую структуру:
|
|--- dist
| |--- src
| |
| index.js
| index.js.map
| index.d.ts
|
package.json
README.md
Теперь я перехожу к проекту, где хочу использовать его как библиотеку, и набираю:
npm install ./project-1.0.0.tgz
Устанавливается успешно.
Теперь я создаю файл index.ts
в своем проекте, в котором только что установил npm
import Project = require("project");
Печатание Project.
дает мне возможности Intellisense, что и было целью всего этого упражнения.
Надеюсь, это поможет кому-то еще в использовании своих проектов TypeScript npm в качестве внутренних библиотек в своих более крупных проектах.
PS: Я считаю , что такой подход составления проектов по НПМ модулям , которые могут быть использованы в других проектах , напоминает .dll
в .NET
мире. Я вполне мог представить себе проекты, организованные в решение в VS Code, где каждый проект создает пакет npm, который затем может использоваться в другом проекте в решении в качестве зависимости.
Поскольку мне потребовалось изрядное количество времени, чтобы понять это, я опубликовал его на случай, если кто-то здесь застрянет.
Я также разместил его для закрытой ошибки по адресу:
https://github.com/npm/npm/issues/11546
Этот пример загружен на Github: vchatterji / tsc-seed