Library QuickStart
Користуватися модулями, написаними на TypeScript, надзвичайно весело, оскільки ви отримуєте чудову безпеку під час компіляції та автозаповнення (по суті, виконувану документацію).
Модулі TypeScript можна використовувати як у браузері nodejs (як є) (з чимось на зразок webpack).
Створити високоякісний модуль TypeScript просто. Припустімо таку бажану структуру папок для вашого пакета:
src/index.ts
: тут ви експортуєте все, що очікуєте, що буде спожито з вашого проекту. Наприклад,export { Foo } from './foo';
. Експорт із цього файлу робить його доступним для споживання, коли хтось виконуєімпорт { /* Тут */ } із 'example';
У вашому
tsconfig.json
мають
compilerOptions
:"outDir": "lib"
+"declaration": true
+"declarationMap" : true
< Це створює.js
(JavaScript).d.ts
(декларації для TypeSafety) і.d.ts.map
(вмикаєdeclaration .d.ts
=>source .ts
навігації IDE) у папці lib.мають
include: ["src"]
< Це включає всі файли з каталогуsrc
.
У вашому
package.json
є"main": "lib/index"
< Це вказує завантажитиlib/index.js
для коду виконання."types": "lib/index"
< Це повідомляє TypeScript завантажитиlib/index.d.ts
для перевірки типу.
Приклад пакета:
npm install typestyle
для TypeStyleВикористання:
import { style } from 'typestyle';
буде повністю безпечним.
Managing Dependencies
devDependencies
Якщо ваш пакет залежить від іншого пакета під час його розробки (наприклад,
prettier
), ви повинні встановити їх якdevDependency
. Таким чином вони не забруднюватимутьnode_modules
споживачів вашого модуля (оскількиnpm i foo
не встановлюєdevDependencies
foo
).typescript
зазвичай єdevDependency
, оскільки ви використовуєте його лише для створення свого пакета. Споживачі можуть використовувати ваш пакет із або без TypeScript.Якщо ваш пакет залежить від інших пакетів, створених JavaScript, і ви хочете використовувати його з безпекою типів у своєму проекті, розмістіть їхні типи (наприклад,
@types/foo
) уdevDependencies
. Типами JavaScript слід керувати out of bound з основних потоків NPM. Екосистема JavaScript надто часто порушує типи без семантичного керування версіями, тому, якщо вашим користувачам потрібні типи для них, вони повинні встановити версію @types/foo, яка їм підходить. Якщо ви хочете, щоб користувачі встановили ці типи, ви можете розмістити їх уpeerDependencies
, згаданих далі.
peerDependencies
Якщо ваш пакет залежить від пакета, з яким він works with (на відміну від works using), наприклад. react
, помістіть їх у peerDependencies
так само, як і з необробленими пакетами JS. Щоб перевірити їх локально, ви також повинні помістити їх у devDependencies
.
Тепер:
Коли ви розробляєте пакет, ви отримаєте версію залежності, яку ви вказали у своїх
devDependencies
.Коли хтось встановлює ваш пакет, він not отримає цю залежність (оскільки
npm i foo
не встановлюєdevDependencies
зfoo
), але вони отримають попередження про те, що їм слід встановити відсутніpeerDependencies
вашого пакета .
dependencies
Якщо ваш пакунок обертае інший пакунок (призначений для внутрішнього використання навіть після компіляції), вам слід помістити їх у залежності
. Тепер, коли хтось встановить ваш пакет, він отримає ваш пакет + будь-які його залежності.
Last updated