重写一个旧的应用程序,然后慢慢使用webpack来包装件。为了保持与代码库的旧部分的兼容性,global
上有几个函数,并且需要在一段时间内保持可访问状态。我尝试过设置output
对象library
属性,这样可行。但是,我最终得到的库包含三个空对象(对于每个入口点)。我查看了expose-loader
插件并得到了相同的结果。我确信我对此缺乏了解,仍然在努力完成学习曲线。受到许多SO帖子对此事的影响(https://stackoverflow.com/a/39166592/1893557)
entry: {
app: './app.js',
mystc: './mystc/index.js',
vendor: [
// 'jquery',
'angular',
'angular-aria',
'angular-animate',
'angular-messages',
'angular-sanitize',
'angular-material',
'angular-material-data-table',
'moment',
'bootstrap',
'pikaday',
'timepicker',
'ng-infinite-scroll',
'atrament',
'node-waves',
'cache-autocomplete'
]
},
output: {
// path: __dirname + '/js',
path: __dirname + '/js-webpack',
filename: '[name].bundle.js',
libraryTarget: 'var',
library: ['GlobalAccess', "[name]"]
},
在图片^^^中,您将看到此配置的输出。 mystc
入口点内的内容是:
require("./loadtesting");
require("./utilities");
require("./webnotifications");
require("./ajaxclient");
require("./Number");
这些文件指向已在各自文件中导出的许多功能。因此,在应用程序的许多部分中使用这些函数,并且不必重命名或修复现在在代码库中调用的所有函数。
答案 0 :(得分:1)
在数组中明确声明数据中的文件(模块),如下所示:
testGlobal: ['./home/ajaxclient', './home/loadcore'],
现在我可以从output.library
访问导出的函数答案 1 :(得分:1)
内部./mystc/index.js
不仅require
,而且还应该导出
exports.loadtesting = require("./loadtesting");
exports.utilities = require("./utilities");
exports.webnotifications = require("./webnotifications");
exports.ajaxclient = require("./ajaxclient");
exports.Number = require("./Number");