私はこのReactJSプロジェクトで作業していますが、サブフォルダpackage.jsonを読み込み、それらをnode_modulesにインストールした後、グローバル変数をコード内のどこでも使用できるようにします。Webpack:ProvidePluginとexpose-loaderを使用せずにグローバル変数を公開する
問題は、webpack.config.js(私はそれらを動的に追加する必要がある)の構文のためにexpose-loader上のjsonsにアクセスできないため、代わりに次のように追加するローダーを作成しました。 package.jsonをテストし、依存関係を取得して公開ローダーの動作を複製しようとします。
これは
var toCamelCase = function(str) {
return str.toLowerCase()
.replace(/[-_]+/g, ' ')
.replace(/[^\w\s]/g, '')
.replace(/ (.)/g, function($1) { return $1.toUpperCase(); })
.replace(/ /g, '');
}
var returning_string = function(dependencies_object){
var final_string = "";
Object.keys(dependencies_object).map(function(dependency){
var location = require.resolve(dependency);
var export_dependency = 'module.exports = global["'+toCamelCase(dependency)+'"] = require("-!'+ location+'");';
final_string += export_dependency;
})
return final_string;
};
module.exports = function() {};
module.exports.pitch = function(e){
if(this.cacheable) {this.cacheable();}
var dependencies = require(e).dependencies;
return returning_string(dependencies);
};
問題では出力がまったく同じであっても、それは仕事をして公開するローダーを使用しながら、何らかの理由で、それはグローバルコンテキストにライブラリを追加していないことです。両方のことをするときに、私は手動で後で何とかして複製する必要があるプラグインを提供する依存関係を追加しました。
これを行うにはもっと良い方法はありますか?または私は正しいことをしていますが、何かが欠けていますか?
ソリューションを見つけましたか?私はこの同じ問題を抱えています。別のバンドラーを使用したのですか? – user1828780