Webpack:使用另一个依赖项而不是它自己的子依赖项来创建依赖项

时间:2015-09-18 15:11:06

标签: javascript dependency-management webpack

我正在使用webpack来构建我的应用,并且我使用的库(eventemitter4)本身依赖于另一个库(underscore)。

但是,我已经在我的应用程序中使用了underscorelodash的替代品,更确切地说是es6版本)。 我希望eventemitter4使用这个以后的库,并避免在我的构建中包含两个。

我使用npm install安装我的依赖项。因此,underscore被捆绑为eventemitter4目录中的子目录。

它试图设置别名,但我无法使它工作:

alias: {
  "underscore": "lodash-es",
  "lodash": "lodash-es",
  "~/underscore": "lodash-es"
}

加注

ERROR in ./~/eventemitter4/index.js
Module not found: Error: Cannot resolve module 'lodash-es' in /Users/me/myapp/node_modules/eventemitter4
@ ./~/eventemitter4/index.js 6:2-23

如果我不添加"~/underscore": "lodash-es",则会包含子underscore而不是lodash

有什么想法吗?

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

我实际上找到了原因。别名正在运作。导致错误的原因是lodash-esmain中没有提供package.json属性(它只提供了一个无法被webpack识别的esnext:main)。

我使用以下方法解决了这个问题:

alias: {
  "underscore": "lodash-es",
  "lodash": "lodash-es/lodash",
  "~/underscore": "lodash-es"
}