Это более свежий ответ с использованием 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
в моем проекте, где я только что установили НПМ import Project = require("project");
Typing Project.
дает мне возможности Intellisense, который был точкой всего этого упражнения.
Надеюсь, что это поможет кому-то другому использовать свои проекты в стиле PHP в качестве внутренних библиотек в своих больших проектах.
PS: Я считаю, что такой подход составления проектов по НПМ модулей, которые могут быть использованы в других проектах напоминает .dll
в .NET
мире. Я вполне мог представить проекты, которые организуются в решении VS VS, где каждый проект создает пакет npm, который затем может быть использован в другом проекте в решении как зависимость.
Так как для этого потребовалось немало времени, я разместил его на случай, если кто-то застрянет здесь.
Я также разместил его на закрытый жук по адресу: https://github.com/npm/npm/issues/11546
Этого пример был загружен на Github: vchatterji/tsc-seed
Полезные заметки: Я написал проект, [копия] (https://github.com/styfle/copee), а также [сообщение в блоге] (https://medium.com/@styfle/es6-modules -today-with-typescript-22969cd360f0), чтобы провести вас через настройку TS-проекта, чтобы генерировать определения типов вместе с целями CJS и ESM перед публикацией в npm. Это позволит максимально использовать использование узлов и браузеров в будущем. – styfle