【发布时间】:2019-12-23 07:20:20
【问题描述】:
我有一个包含多个 node_modules 目录的项目
myproj
|-->app1
package.json
|-->node_modules
|-->src
|-->origapp_reactnative
package.json
|-->node_modules
|-->shared_src
|-->app2
package.json
|-->node_modules
|-->src
当使用 webpack 构建 app1 或 app2 时(从它们各自的根目录)。 我必须指定
resolve.modules=[path.resolve(__dirname,"./node_modules")]
如果我不这样做,那么 webpack 将尝试从
中提取代码 |-->origapp_reactnative
|-->node_modules
因为 app1 或 app2 包含来自 shared_src 的源。 并且 webpack 尝试遵循 nodejs 约定并在 shared_src 旁边的目录中查找 node_modules。
这就是我将 resolve.modules 设置为绝对路径的原因。
但是,这会产生另一个我无法克服的问题: webpack 将绝对路径指定的 node_modules 中的依赖树展平。这就产生了依赖问题,不同版本的模块不能共存。
所以我正在寻找一种使用相对路径的方法
resolve.modules=["./node_modules"]
但需要帮助弄清楚如何排除 node_modules
|-->origapp_reactnative
|-->node_modules
从 webpacks 考虑。
( 我曾尝试按照此处 [1] 的讨论指示 babel loader,不要看那里——但这还不够,因为编译仍然会失败。 )
【问题讨论】: