将entryPoint函数公开给全局

时间:2017-01-30 06:49:28

标签: webpack

重写一个旧的应用程序,然后慢慢使用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]"]
    },

enter image description here

在图片^^^中,您将看到此配置的输出。 mystc入口点内的内容是:

require("./loadtesting");
require("./utilities");
require("./webnotifications");
require("./ajaxclient");
require("./Number");

这些文件指向已在各自文件中导出的许多功能。因此,在应用程序的许多部分中使用这些函数,并且不必重命名或修复现在在代码库中调用的所有函数。

2 个答案:

答案 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");