我有一个在很多模块中使用 zepto 的项目。
如您所知,webpack.ProvidePlugin 是处理这种情况的最佳方式,有了它,我不需要在每个模块中手动导入 zepto。

zepto 不导出自身,因此我无法使用 ProvidePlugin 导入它。

 plugins: [
    new webpack.ProvidePlugin({
      $: 'zepto'
    })
  ]

我知道有一个名为 webpack-zepto 的 zepto 包装。

但是如果采用这种方案,每次zepto更新时,都需要自己更新代码。

有没有办法解决我的问题?

最佳答案

你可以试试 script-loader :

webpack.config.js

loaders: [
    {
        test: require.resolve('zepto/zepto.min.js'),
        loader: 'script'
    }
]
plugins: [
    new webpack.ProvidePlugin({
        $: 'zepto/zepto.min.js'
    })
]

它将读取 zepto.min.js 文件并执行它,就像你把它放在一个脚本标签中一样,然后在你的模块中,你可以通过 window.$ 访问 zepto

更新:

如果您只是想使用 $ 而不是 window.$ ,您可以通过 exports-loaderscript-loader 要求 zepto.min.js 文件:
webpack.config.js

loaders: [
    {
        test: require.resolve('zepto/zepto.min.js'),
        loader: 'exports?window.$!script'
    }
]
plugins: [
    new webpack.ProvidePlugin({
        $: 'zepto/zepto.min.js'
    })
]

关于webpack.ProvidePlugin with zepto,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35006730/

10-09 08:59