【问题标题】:Expect module as global in certain environment期望模块在某些环境中是全局的
【发布时间】:2017-12-20 18:22:10
【问题描述】:

我想制作一个满足全局范围的导入依赖的 webpack 配置。例如,

import * as $ from 'jquery';

对于一个 webpack 配置,我希望它被捆绑。另一方面,我希望它从窗口中获取 $ 。帮助表示赞赏

【问题讨论】:

    标签: webpack


    【解决方案1】:

    你可以利用 expose-loader 来定义一个全局的模块。为此,您必须安装 expose-loader 并设置如下规则:

    //install expose-loader
    npm install --save-dev expose-loader
    
    //set up rule (just relevant parts)
    module.exports = {
      module: {
        rules: [
          {
            test: require.resolve('jquery'),
            use: [{
              loader: 'expose-loader',
              options: 'jQuery'
            }, {
              loader: 'expose-loader',
              options: '$'
            }]
          }
        ]
      }
    }
    

    【讨论】:

    • 这听起来像是它将获取我的 jQuery 模块,捆绑它,然后将它公开给全局。我想要的是让应用程序假设 jQuery 已经在全局范围内,由页面或页面内的另一个库提供。这有意义吗?
    【解决方案2】:

    我发现NormalModuleReplacementPlugin 可以满足我的要求。为我的所有 deps 包使用标准版本,使用一个 shim 导出窗口 $ 为我希望它已经可用的版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-07
      • 1970-01-01
      • 2019-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-29
      • 1970-01-01
      相关资源
      最近更新 更多