Webpack:表达模块依赖

时间:2014-11-05 03:06:43

标签: requirejs amd webpack

我正在尝试require我的网络包应用程序中的bootstrap-webpack模块。

它似乎需要jQuery,因为捆绑的javascript会抛出以下内容:

未捕获的ReferenceError:未定义jQuery

如何指定webpack jQuery是bootstrap-webpack模块的依赖项,以解决此问题?感觉它应该是微不足道的,但我一直在努力弄明白。

我尝试添加:

"jquery": "latest"

到bootstrap-webpack的package.json中的dependecies,但这不起作用。 documentation不完整,我似乎找不到这个问题。这应该是微不足道的吧?救命!

2 个答案:

答案 0 :(得分:50)

有两种可能的解决方案:

使用ProvidePlugin :它扫描给定标识符的源代码,并将其替换为对给定模块的引用,就像它已被要求一样。

// webpack.config.js
module.exports = {
    ...
    plugins: [
        new webpack.ProvidePlugin({
           $: "jquery",
           jQuery: "jquery"
       })
    ]
};

使用imports-loader :它可以预先准备require()个语句。

// webpack.config.js
{
    ...
    module: {
        loaders: [
            { test: require.resolve("jquery"), loader: "imports?jQuery=jquery" }
        ]
    }
}

在这种情况下,您需要先运行npm install imports-loader --save

答案 1 :(得分:10)

通过this github issue

安装expose-loader并在需要webpack-bootstrap之前将require('expose?$!expose?jQuery!jquery');添加到主入口点。

这会在窗口上设置jQuery,所以任何文件都可以获取它。小心这个方法,所有文件都可以访问该版本的jQuery,无论是否明确要求它。