2016-06-05 3 views
2

Я хочу написать модуль npm в TypeScript. Может кто-нибудь порекомендовать мне руководство по лучшей практике, как начать?Модули NPM + Рекомендации по использованию TypeScript

Мои вопросы:

  • Node.js не поддерживают машинопись из коробки, не так ли? Итак, как рекомендуется опубликовать модуль npm? Создайте 2 папки/ts/js и укажите в package.json значение js/index.js в качестве точки входа. Или использовать какой-то транспилятор времени выполнения и запустить файл TypeScript напрямую? Или не рекомендуется в любом случае публиковать любой код TypeScript в модуле npm и просто скомпилировать его до обычного Javascript и предоставить источник TypeScript в репозитории Git?

  • Каков рекомендуемый способ поддержки печати? Я видел, как я могу ссылаться в своем файле package.json на файлы ввода. Могут ли они быть в сети, должен ли я предоставить им модуль npm или файлы ts и dtd вообще не будут опубликованы? Устанавливайте их с помощью пигментов и также выдавайте typings.json?

  • Если я хочу предоставить поддержку ввода текста для своего кода, как это рекомендуется? даже мои модули очень маленькие и простые (делайте одно и делайте это правильно), может быть полезно предоставить некоторую информацию и поддержку автозаполнения. Я все еще новичок в TypeScript, поэтому не уверен, что это лучший способ сделать это. Я бы предпочел написать интерфейс и предоставить его своим модулем npm. Должны ли эти файлы позже загружаться в каталог DefinitelyTyped или делать это только для более крупных библиотек?

Я хотел бы, чтобы здесь, как сделать это правильно с текущей машинописью и узел версией, так как много информации я нашел устарел в виде таких вещей, как autodts, ТСД и так далее.

Im очень рад, если кто-то может мне помочь. Как только я знаю, как это делается правильно, я сделаю документацию и предоставил эту информацию другим пользователям Github.

Приветствие

+0

Вам было бы лучше расщепить это на 3 отдельных вопроса –

ответ

2

К вашему первому вопросу: Да, вы должны transpile код машинописи, прежде чем публиковать вы НОЕ пакет, но вы можете сделать это очень легко, убедившись, что у вас есть это в вашем package.json:

"scripts": { 
    "prepublish": "tsc", 
    } 

Лучшая практика структурирования файлов должна использоваться, например, каталог src для ваших ts-файлов, а затем корневой уровень или другой каталог (например, dist) для js-файлов. Вы можете установить это, определив «OUTDIR» в вашем tsconfig.json:

"compilerOptions": { 
    [...] 
    "outDir": "dist" 
} 

также ссылки на принятый ответ здесь помогла мне с подобными вопросами: Writing NPM modules in Typescript

Что касается вашего вопроса о типизации в пакете npm: для обеспечения ввода в текущей версии машинописного текста вам не нужно ничего менять в вашем пакете. json. Вы можете просто добавить файл index.d.ts к корневому уровню вашего пакета. Если кто-то использует ваш модуль, скрипт автоматически найдет там текст.