expose-loader

expose-loader

公开加载器将模块添加到全局对象。这对于调试或支持依赖全局库中库的库很有用。

安装

npm i expose-loader --save

用法

注意:模块必须在你的 bundle 中被 require() 过,否则他们将不会被暴露。

require("expose-loader?libraryName!./file.js" // Exposes the exports for file.js to the global context on property "libraryName". // In web browsers, window.libraryName is then available.

例如,假设您想将 jQuery 公开为全局调用$

require("expose-loader?$!jquery"

然后,window.$ 就可以在浏览器控制台中使用。

或者,你可以在你的配置文件中设置它:

webpack v1 的用法

module: { loaders: [ { test: require.resolve("jquery"), loader: "expose-loader?$" } ] }

webpack v2使用情况

module: { rules: [{ test: require.resolve('jquery'), use: [{ loader: 'expose-loader', options: '$' }] }] }

除了暴露为 window. $ 之外,假设你还想把它暴露为 window.jQuery。 对于多个暴露,你可以在 loader 字符串中使用 !

webpack v1 的用法

module: { loaders: [ { test: require.resolve("jquery"), loader: "expose-loader?$!expose-loader?jQuery" }, ] }

webpack v2 使用情况

module: { rules: [{ test: require.resolve('jquery'), use: [{ loader: 'expose-loader', options: 'jQuery' },{ loader: 'expose-loader', options: '$' }] }] }

require.resolve 是一个 node.js 调用(与 webpack 处理流程中的 require.resolve 无关)。require.resolve 用来获取模块的绝对路径("/.../app/node_modules/react/react.js")。所以这里的暴露只会作用于 React 模块。并且只在 bundle 中使用到它时,才进行暴露。