Protractor: NPMリリースパッケージは `globals.ts`を` globals.d.ts`に置き換える必要があります

作成日 2016年08月18日  ·  3コメント  ·  ソース: angular/protractor

バグレポート

  • ノードバージョン: 6.3.1
  • 分度器バージョン: 4.0.3
  • Typescriptバージョン: 2.0.0

    概要

これは、ソースファイルがprotractor/globalsインポートするtypescriptプロジェクトに固有です。 具体的には、 protractor/globalsインポートする場合、NPMリリースには対応する定義ファイル( globals.d.ts )の代わりにglobals.tsファイルが含まれているため、typescriptコンパイラは消費するtypescriptプロジェクトの共通ソースルートを計算します分度器のglobal.ts依存関係(おそらくnode_modules/protractor )と、消費プロジェクトのソースが含まれている場所(たとえば、 src/test/**/*.ts )との間の共通パスへ。 これにより、コンパイラはすべての親ディレクトリを含むソースファイルを出力します。

これは、typescriptコンパイラがコンパイルされたファイルを出力する場所に関する純粋な問題であることに注意してください。 コンパイルは正常に行われ、分度器は期待どおりに(驚くほど)消費されます。

再現する手順

私が十分に説明していないシナリオをよりよく示すために、このサンプルプロジェクトを参照し

提案された解決策

ここでこれを解決することは、2つのことの組み合わせになると思います。

  1. 現在のgulpコンパイルプロセスを更新して、 globals.tsファイルのコンパイル時に定義ファイルが作成されるようにします。 と
  2. Protractor NPMリリースプロセス(手動または自動)を更新して、NPMリリースパッケージからglobals.tsファイルを削除し、コンパイルされたjavascriptファイルと対応する定義ファイルのみを残します。

これが適切な場合は、ソリューションの最初の部分を処理するためのプルリクエストを送信していただければ幸いです。 NPMへのリリースプロセスがまだプロジェクトのリリースドキュメントに従っている場合は、 globals.tsファイルを削除する手順で更新することもできますが、実際にリリースを実行する人がそれを行う方がよい場合があります。

私はこれを熟考し、Typescriptコンパイラが期待どおりに動作していると信じていますが、まだTypescriptに足を濡らしているので、同意できない場合はお知らせください。

(編集:バグテンプレートを反映するようにフォーマットを更新)

最も参考になるコメント

@cnishinaは、例がglobal.tsファイルを削除しますが、対応するglobals.d.ts宣言はありませんprotractor/globalsインポートを、プロジェクトを消費するためにtypescriptコンパイラから見えないようにしますか?

したがって、私の提案の最初の部分は、コンパイルされたglobals.jsを削除して、 globals.d.ts宣言を優先することではなく、NPMパッケージに次のものが含まれるように両方を含めることだったと思います。

  • globals.js
  • globals.d.ts

globals.tsソースファイルなし。

これは、 global.tsファイルをコンパイルするときに--declarationフラグ思います。 たとえば、以下のようにtsc:globals gulpタスクを変更すると、tsc tsc:wタスクと

gulp.task('tsc:globals', function(done) {
  runSpawn(done, 'node', ['node_modules/typescript/bin/tsc', '--declaration', 'globals.ts'],
    'ignore');
});

何か足りないものがあれば教えてください。すぐに修正してくれてありがとう! ちなみに、Typescriptで分度器を使用することは深刻な爆発です!

全てのコメント3件

@tmeneauこの問題をありがとう:私はgithubの例が本当に好きでした...👍👍👍

したがって、これはoutDirを使用する場合の副作用です。 たとえば、 outDiroutputに設定されている場合、トランスパイルされたファイルに加えて、 output/node_modules/protractor/globals.jsもトランスパイルされます。 私はもともとglobals.tsファイルを含めました。なぜなら(当時)いくつかの実験の後、TypeScriptファイルがないとファイルタイプをインポートできなかったからです。

提案を通過するには:

  1. グローバル名前空間から変数を割り当てているため、globals.tsを単なる宣言ファイル* d.tsにすることはできないため、機能しません。
  2. exampleTypescript実験した後、これは機能しているように見えます。 .npmignoreを更新して、そのファイルを公開せず、ProtractorをTypeScript 2にアップグレードします。https

@cnishinaは、例がglobal.tsファイルを削除しますが、対応するglobals.d.ts宣言はありませんprotractor/globalsインポートを、プロジェクトを消費するためにtypescriptコンパイラから見えないようにしますか?

したがって、私の提案の最初の部分は、コンパイルされたglobals.jsを削除して、 globals.d.ts宣言を優先することではなく、NPMパッケージに次のものが含まれるように両方を含めることだったと思います。

  • globals.js
  • globals.d.ts

globals.tsソースファイルなし。

これは、 global.tsファイルをコンパイルするときに--declarationフラグ思います。 たとえば、以下のようにtsc:globals gulpタスクを変更すると、tsc tsc:wタスクと

gulp.task('tsc:globals', function(done) {
  runSpawn(done, 'node', ['node_modules/typescript/bin/tsc', '--declaration', 'globals.ts'],
    'ignore');
});

何か足りないものがあれば教えてください。すぐに修正してくれてありがとう! ちなみに、Typescriptで分度器を使用することは深刻な爆発です!

うん...👍 globals.d.ts protractor/globalsインポートを機能させるには、 globals.d.tsがまだ存在しているはずです。 PRを更新しました。 ありがとう!

このページは役に立ちましたか?
0 / 5 - 0 評価