30秒を教えてあげます.Type ScriptでNPMに包んでください.


文章はThe 30 second gide to publishing a typescript package to npmから訳して、部分の内容は修正があります.
この文章はJS、TS、NPMの知識が必要です.普通のNPMバッグを書いたほうがいいです.ないなら、ネットで教程が多いです.全部簡単です.
npmパッケージを発表したことがある学生は全部知っています.npmプロジェクトを初期化して、直接npm init -yを使えばいいです.tsを使うなら、直接tsc --initを使えばいいです.この2つの動作は、package.jsonおよびtsconfig.jsonファイルを生成する.その後、以下の手順で設定を変更します.
1."declaration": trueをあなたのtsconfig.jsonに追加します.
この行の文はTypes Scriptがコンパイルする時に自動的にd.tsファイルを作成すると教えています.プライベートタイプを使用すると、このタイプも外部APIの一部になりますが、このタイプの利用者はこのタイプのタイプの推論が得られないので、TSコンパイラも警告します.この場合、タイプの前にexportを追加するだけでいいです.
2."types": "index.d.ts"をあなたのpackage.jsonに追加します.
他の人があなたのカバンを導入すると、この言葉はTSコンパイラにタイプ定義ファイルを探す場所を教えてくれます.ここの.d.tsファイルとmain入り口はフォルダを指しています.だから、通常、あなたのpackage.jsonは次の2つの行を含みます.
"main": "dist/index.js",
"types": "dist/index.d.ts"
(上記のデフォルトはtsconfig.jsonで構成されたoutDirdistディレクトリを指しています)
3.distディレクトリが.gitignoreに追加されたことを保証します.
コード倉庫では、一般的にコンパイルコードを含む必要はありません.ソースを含むだけでいいです.ですから、私たちはdistカタログにバージョン管理をしません.また、これはnpmにdistディレクトリをリリースすることにも影響しません.
4.運転ビルドコマンドtscを実行すると、すべてのソースコードがコンパイルされます.これは非常に便利です.通常はpackage.jsonにコマンドを追加できます.
"build": "tsc"
5.npm pblishを実行する
次にnpmにリリースします.package.jsonに以下のコマンドを追加します.
"release": "tsc && npm publish"
私はstandard-versionを使って、commitizenと協力してnpmカバンを発表する習慣があります.興味がある人は自分で調べてみてください.
公開前にローカルパケットをデバッグする場合は、npm linkコマンドを使用して、本プロジェクトのルートディレクトリがnpm linkを実行し、デバッグするデモトプロジェクトでnpm link を実行して、コードに直接導入して使用すれば良い.
以下は配置完了後のpackage.jsonです.
{
    "name": "my-ts-lib",
    "version": "1.0.0",
    "description": "My npm package written in TS",
    "main": "dist/index.js",
    "types": "dist/index.d.ts",
    "scripts": {
        "build": "tsc",
        "release": "tsc && npm publish"
    },
    "author": "savokiss",
    "license": "MIT",
    "devDependencies": {
        "typescript": "^3.5.3"
    }
}
以下は最終のtsconfig.jsonです.
{
    "compilerOptions": {
        "target": "es5",
        "module": "commonjs",
        "lib": ["es2017", "es7", "es6", "dom"],
        "declaration": true,
        "outDir": "dist",
        "strict": true,
        "esModuleInterop": true
    },
    "exclude": ["node_modules", "dist"]
}