我具有以下结构:
Project1
ProjectShared
ProjectShared生成带有“ ./shared.ts”的DllPlugin,例如“ jquery”,Project1引用它。在我的Project1 HTML中,我希望包含引用的vendor.js和bundle.js。
现在,当我从Project1导入例如jquery
时,它使用的是DLL中的代码,因此该部分可以按预期工作。 (./node_modules/jquery在两种情况下都是相同的)
但是,如果我导入“ ../ProjectShared/shared”,它会编译,但是此代码不包含在DLL中,而是再次包含在捆绑包中。 (../ProjectShared/shared.ts与./shared.ts不同)
如果我随后将ReferencePlugin的上下文切换到../ProjectShared/,则可以,但是届时将不会从DLL使用jquery。 (./node_modules/jquery!= ../ ProjectShared / node_modules / jquery)
我可以理解为什么会发生这种情况(不同的上下文),但是如果我想在两个项目之间共享代码而又不必将它们移至模块又希望模块也共享怎么办?
我看到,如果我使用“ ../ProjectShared/node_modules/jquery”而不是“ jquery”,则可能会起作用,原因是上下文再次相同。但这即使我在tsconfig中使用路径或在webpack中使用resolve.alias看起来也很丑。
推荐做这种事情的方法是什么?