2016-11-30 122 views
0

我建立与的WebPack和NPM模块我的网站代码和sutmbled于以下问题:力依赖于使用特定的子版本的依赖

我的代码使用的jQuery 3.1.1,并增加了一些插件吧。 我也在使用jQuery上的子依赖关系的依赖关系< = 2.2.4。 问题是,子依赖项的对象显然不知道我的jQuery插件,因为模块使用不同的jQuery版本。

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

我试过使用npm shrinkwrap来覆盖依赖版本,但似乎不工作。这是我修改拆封文件:

{ 
    "name": "example", 
    "version": "0.1.0", 
    "dependencies": { 
    "can": { 
     "version": "2.3.27", 
     "from": "[email protected]>=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打印​​

解决方案来解决的WebPack,而不是故宫的问题也是可以接受的。

回答

1

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

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

现在使用require('jquery')每个模块加载位于别名路径下,无论指定版本在模块的package.json jquery的模块。

因为这个解决方案需要webpack,所以我现在还没有解决问题,如果只有npm解决方案,我会感兴趣。