2016-12-04 6 views
0

私はブラウザとサーバーで実行するライブラリを持っています。このライブラリはNeedleに依存しており、ブラウザでXMLHttpRequestsリクエストが使用されているとします。このライブラリは、フロントエンドでバンドルされたブラウザー化されたライブラリを使用し、ノードで通常のES6コードを使用します。条件付きノード/ Browserifyライブラリが必要ですか?

ここでは、ブラウザ用にdist/vendor.min.js、ノード用にはlib/index.jsの2種類のコードがあります。私は、フロントエンドのコードをuglifyを決定するまでのエントリポイントで私のライブラリの

index.js

'use strict'; 

// In browsers, load the bundled version 
module.exports = process.browser ? require('./dist/vendor.min.js') : require('./lib/index.js}'); 

package.json

{ 
    "main": "index.js" 
} 

このソリューションは正常に動作します。このライブラリを使用しているアプリケーションは、実稼働環境のサードパーティのライブラリをすべて醜くしています。ここで起こっていることは、移植されていないES6のjavascriptであるノードコードを醜くしようとしています。

これらのライブラリを条件付きで読み込むには、より良い方法がありますか?

+0

この戦略はhttp://stackoverflow.com/questions/23038483/how-to-detect-when-browserify-is-being-runから適応されました – bneigher

答えて

1

これを行うもっとエレガントな方法があるようです。

package.json

{ 
    "main": "index.js", 
    "browser": { 
    "index.js": "./dist/vendor.min.js" 
    }, 
} 

これは名前のindex.jsを持つすべてのネストされたファイルではなく、私は何を持っていないこのケースでなければなりませんどのような効果わかりません。しかし、はい、package.jsonのブラウザ環境では、require( 'index.js')を 'proxyquire'することができます。きちんとしたありがとうインターネット

関連する問題