我在这个ReactJS项目中工作,并且我有一个读取子文件夹package.json的要求,将它们全部安装到node_modules中,之后安装所有依赖项将它们添加到全局变量,以便它们可以在代码中的任何地方使用。Webpack:在不使用ProvidePlugin和Expos-loader的情况下公开全局变量
问题是,我没有访问到由于来自webpack.config.js(我需要动态地添加它们)的语法的公开加载器上的jsons,所以相反,我创建了一个加载器测试package.json,获取依赖关系并尝试复制expose-loader行为。
这是
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