强制使用特定子依赖性版本



我正在使用webpack和NPM模块构建我的网站代码,并在以下问题上进行了划算:

我的代码使用jQuery 3.1.1并在其中添加了一些插件。我还使用依赖关系,该依赖性在jQuery< = 2.2.4上具有差额。问题是,由于模块使用不同的jQuery版本,因此亚依赖关系的对象显然不知道我的jQuery插件。

我如何强制所有依赖关系(顶级和嵌套)使用一个版本的jQuery?因此require("jquery")总是解析为jQuery 3.1.1。

我已经尝试使用NPM缩水量覆盖依赖项版本,但这似乎不起作用。这是我修改的缩小包装文件:

{
  "name": "example",
  "version": "0.1.0",
  "dependencies": {
    "can": {
      "version": "2.3.27",
      "from": "can@>=2.3.23 <3.0.0",
      "resolved": "https://registry.npmjs.org/can/-/can-2.3.27.tgz",
      "dependencies": {
        "jquery": {
          "version": "3.1.1",
          "from": "^3.1.1"
        }
      }
    }
  }
}

但是模块的依赖性仍然是jQuery 2.2.4,npm install打印npm ERR! invalid: jquery@3.1.1 /path/.../can/node_modules/jquery

也接受了用WebPack而不是NPM解决问题的解决方案。

我已经使用webpack别名找到了解决方案。

resolve: {
    root: __dirname,
    alias: {
        "jquery": "node_modules/jquery/src/jquery",
    }
}

现在,使用require('jquery')的每个模块都加载位于别名路径下方的jQuery模块,而不管模块的软件包中的指定版本如何

我现在就将问题打开了

在 @mcfarlane的回答上跟进,这是设置别名而不是使用原始路径的安全方法:

{
    resolve: {
        alias: {
            "jquery": require.resolve("jquery"),
        }
    }
}

相关内容

  • 没有找到相关文章

最新更新