2016-11-29 83 views
0

处理将在浏览器上下文中运行的一组脚本,其中某些模块(例如下划线)将作为全局模块提供。但是,我要依赖node_modules中的require/import直接下划线。编译这些文件时可以将WebPack配置为依赖全局下划线实例,而不是在编译的脚本中重复该库?WebPack 2:用全局替换require'd模块

回答

2

你要寻找的是Externals:在的WebPack

externals配置提供的不包括在包的依赖的方式。相反,创建的捆绑包依赖于该依赖关系来存在于消费者环境中。这通常适用于图书馆开发人员,但应用程序开发人员也可以充分利用此功能。

这甚至适用于模块node_modules,为的WebPack走整个依赖树找出在所产生的包中包含的内容。

甚至还有一个example这是专门为你的使用情况,它看起来像:

externals : { 
    lodash : { 
    commonjs: "lodash", 
    amd: "lodash", 
    root: "_" // indicates global variable 
    } 
} 

这句法被用来描述所有可能的方式,一个外部库可以是可用的。 lodash在AMD和CommonJS模块系统下可用作lodash,但在全局变量形式中以_表示。

0

如果您想要在加载软件包时依赖环境中已有的库,则需要使用externals

module.exports = { 
    externals: { 
     underscore: "_" 
    } 
} 

对象(underscore)的关键是你用什么来导入,和值(_)是全局变量它会寻找。

require("underscore"); // Will return the _ variable from the global environment!