TLDR; 私の質問は次のとおりです。 browserifyrequire
を独自の実装でオーバーライドせず、代わりにbrowserifyRequire
独自の内部要件すべてに別のメソッド名 (例: ) を使用する方法はありますか? なぜこれを行う必要があるのか を知るために、読んでください...
シナリオ
デフォルトのPhantomJSとは対照的に、CasperJSを使用してSlimerJSで実行する自動テストを作成しようとしています(私が知っている限りでは、PhantomJSでも同じ次の問題に遭遇します)。
これらをCoffeeScriptで記述する方法を知りたいです。結局のところ、CasperJS や SlimerJS は、最近の CoffeeScript ではうまく機能しません。ドキュメントの推奨事項は、casper を実行する前に JS にコンパイルすることです。わかりました...あまり便利ではありませんが、私はそれを処理できます。実際、require
これらのツールでパスを解決する方法は、Node.js の場合ほど単純ではないこともわかっています。そのため、実行前にバンドルすることも役立つはずです。
しかし今、バンドルされたコードを実行しようとすると、新しい一連の問題に直面しています。そのためにBrowserifyを使用しています。
問題
私のテストコードでは、する必要がありrequire('casper')
ます。CasperJS の世界での標準的なプラクティス。そのため、CasperJS をバンドルしないように browserify に指示する必要がありまし"browser": { "casper": false }
たpackage.json
。これまでのところ問題はありません。しかし、次の問題が発生します。
Browserify は組み込み関数をオーバーライドし、browserify を機能させるすべてのことを行うrequire
独自の実装を提供します。require
CasperJS は、require('casper')
ディレクティブに遭遇するまで問題ありません。require
これは、CasperJS が browserifyではなく 'ing'を行う必要があるのは 1 回だけです。そして、それは失敗します。
不完全な解決策
require
CasperJSは独自の方法を実装しているため、CasperJSはBrowserifyがオーバーライドするという事実に対処できないと確信していますrequire
。その仮説をテストするために、結果のバンドルを手動で編集し、すべての出現箇所の名前をrequire
toに変更しましたbrowserifyRequire
(browserify のrequire
. CasperJSrequire
でrequire('casper')
ing require
. 実際、これにより期待どおりに機能するようになりました。
質問
繰り返しますが、browserify に独自の internal に別の名前を使用させる方法はありrequire
ますか? バンドル後にこの変更を行うスクリプトを作成できると思いますが、構成を介してこれを行う方法を見つけたいと思います。
別の質問
たぶん、Browserify の代わりに、CasperJS 内で CoffeeScript をバンドルして実行するための別のソリューションがありますか? 私はまだ1つを見つけていません....