3

この問題を示すために作成されたリポジトリは次のとおりです。

brianmhunt/karma-rollup-preprocessor-issue-3

Karma-rollup -preprocessor を Karma の組み込みウォッチで動作させようとしています。つまり、showpad/karma-rollup-preprocessor#3 を解決します。

つまり、プリプロセッサで、Karma のウォッチ リストにファイルを追加したいと考えています。

Rollup がコンパイルに使用するファイルのリストを取得するのは簡単です。ロールアップは、読み取ったファイル (監視したいファイル) のリストを返すため、プリプロセッサでカルマが監視するリストにファイルを追加しようとしています。

基本的に、これ(または同等の機能)をプリプロセッサに追加したい:

bundle.modules.forEach((module) => {
    files.unshift({
        pattern: module.id,  /* The full file path, from Rollup */
        watched: true,
        included: false,
        nocache: false,
        served: false,
    })
})

filesKarma の場所config.files、またはfileList監視対象のファイルを配置するために必要な場所はどこですか。

で上記を実行するconfig.filesと、ファイルは確かにウォッチャーに追加されてい.on(fileList.changeFile)ますが、_isIncluded.

そのため、ファイルも (または代わりに) に追加する必要があるようfileListです。

残念ながら、 を に追加しようとするとfileList$injectエラーが発生します。

エラー: 循環依存を解決できません! (解決: preprocess -> preprocessor:rollup -> fileList -> preprocess)。

インクルードを追加できるように見える他のすべてのプリプロセッサを基本的に調べましたが、それを行う方法の兆候は見つかりませんでした。

Karma がプリプロセッサから監視する必要があるファイルを追加する正規の方法はありますか? または、そうでなければ、どのようにこれを行うことができますか? これは、Karma のプリプロセッサにとっては非常に便利なように思われるため、他のプリプロセッサでは文書化されておらず、明白でもなく、問題もないことは驚くべきことです。

編集 ここにいくつかの試みがあります:

config.files監視パターンをin karma.confieに追加しようとしました

files: [
   "spec/**/*.js",
   {pattern:"src/**/*.js", included: false, watched: true}
]

ただし、src/*変更しても再コンパイルされません。テストが再実行されます。

だから私はこのようにchokidarを試しました:

var server = new karma.Server(options)...

chokidar.watch("src/**/*.js")
  .on('add', server.refreshFiles.bind(server))
  .on('change', server.refreshFiles.bind(server))

カルマが更新時に遅くなった場合に備えて、デバウンスでも試​​しましたが、テストが再実行されないようです.

私はインスピレーションを得るために karma-browserify に根ざしましたが、掘り下げずに理解するには少し複雑すぎました.

4

1 に答える 1

0

これを解決するためにプル リクエストを発行しました。

マージされるまで、私のレポを使用できます。つまり"karma-rollup-preprocessor": "brianmhunt/karma-rollup-preprocessor"package.json依存関係または devDependencies に入れます。

編集: https://github.com/Kflash/karma-rollup-pluginに取って代わられる

于 2016-07-06T16:16:28.787 に答える