首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

expose-loader

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

安装

代码语言:javascript
复制
npm i expose-loader --save

用法

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

代码语言:javascript
复制
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 公开为全局调用$

代码语言:javascript
复制
require("expose-loader?$!jquery");

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

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

webpack v1 的用法

代码语言:javascript
复制
module: {
  loaders: [
    { test: require.resolve("jquery"), loader: "expose-loader?$" }
  ]
}

webpack v2使用情况

代码语言:javascript
复制
module: {
  rules: [{
          test: require.resolve('jquery'),
          use: [{
              loader: 'expose-loader',
              options: '$'
          }]
      }]
}

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

webpack v1 的用法

代码语言:javascript
复制
module: {
  loaders: [
    { test: require.resolve("jquery"), loader: "expose-loader?$!expose-loader?jQuery" },
  ]
}

webpack v2 使用情况

代码语言:javascript
复制
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 中使用到它时,才进行暴露。

扫码关注腾讯云开发者

领取腾讯云代金券