2017-01-30 24 views
0

重写旧的应用程序,并慢慢地使用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"); 

这些文件指向已经在各自的文件已出口许多功能。所以这些函数在应用程序的许多部分中都会使用,并且现在不必重新命名或修复所有在代码库中调用的函数就会很好。

回答

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"); 
1

显式地声明在像这样的条目对象的阵列中的文件(模块):

testGlobal: ['./home/ajaxclient', './home/loadcore'], 

现在我可以从output.library

+0

经过深入挖掘后,实际上只是在导出的最后一个模块中暴露导出的函数y到入口点。 –