4

私はこの記事に従っています:

厳密に型指定された npm パッケージを作成する方法

私のtypescriptプロジェクトをセットアップしてnpmに公開しようとしています。

すべてが理にかなっているように見えますが、カバーされていないのはd.tsファイルの処理方法です。

私のプロジェクトは次のようになります。

src
  node
    server.ts
  browser
    client.ts
  common
    contracts.d.ts

したがって、これをコンパイルすると"declaration": true、次の"outDir: "dist"ようになります。

dist
  node
    server.js
    server.d.ts
  browser
    client.js
    client.d.ts

私のserver.tsファイルとclient.tsファイルの両方が

import {SomeType} from "../common/contracts";

そのため、他の誰かがこのパッケージを使用すると、typescript のコンパイルは失敗しserver.d.tsclient.d.ts両方ともまだこのインポートを持っています。

ノードは正常に動作しますが、このインポートはclient.jsありserver.jsません。tscファイルのインポートを削除する必要がありd.tsます。

私がやりたいことは、contracts.d.tsファイルがビルドの一部として dist フォルダーにコピーされることです。tscビルドの一部としてそれを行うにはどうすればよいですか?

現在の回避策

これを回避するために私が現在行っているのは、私の名前contracts.d.tsを justに変更するcontracts.tsことです。これは、必要なすべてのファイルがdistフォルダーに存在することを意味しますが、クライアントとサーバーの両方が、contracts.js含まれているだけの空のファイルをロードする必要があることを意味します

"use strict";
//# sourceMappingURL=contracts.js.map
4

2 に答える 2

3

私はこれに対して非常に良い解決策を思いついたと思います。宣言ファイルを契約フォルダーに移動したので、プロジェクトは次のようになります。

src
  node
    server.ts
  browser
    client.ts
dist
  node
    server.js
    server.d.ts
  browser
    client.js
    client.d.ts
contracts
    common.d.ts

次に、contracts フォルダーを npm パッケージに含め、.xml を使用してファイルをインポートします../../contracts/common。このパスは、コンパイル時の src フォルダーからも、このパッケージに対してビルドするときの dist フォルダーからも機能します。

于 2016-11-20T11:25:45.487 に答える