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