在支持Typescript的情况下将一个项目的捆绑代码包含到另一个项目中

时间:2018-10-16 18:58:27

标签: javascript typescript webpack monorepo

我正在一个有两个子项目的项目中:我们称它们为ProjectAProjectB。这些是完全不同的项目,但是都是用Typescript编写的,并使用webpack作为捆绑程序。

在开发过程中,我想使用ProjectAProjectB的某些部分,但总体要求是ProjectB必须将ProjectA中的所有代码用作外部依赖项-通过脚本标签,而不是通过npm安装等。

因此,我的想法是使用ProjectA的输出配置属性的库选项来捆绑webpack的代码,将生成的捆绑包托管在某个位置,然后通过将其包含在ProjectB中脚本标签。但是,由于在开发{{1}的过程中我会使用ProjectA的一些功能,所以我也想从ProjectB中受益。

有人可以在这里指出正确的方向吗?

1 个答案:

答案 0 :(得分:1)

创建两个子文件夹/a//b/,然后使用aliases轻松引用a中的b:

// webpack.config.js
 module.exports = {
  //...
 resolve: {
   alias: {
    b: path.resolve(__dirname, '../b/')
   }
  }
};

然后,您可以轻松地以以下方式在零件之间导入:

  import Something from "b/something";
  

但总体要求是ProjectB必须使用ProjectA中的所有代码作为外部依赖项-

然后将另一个Webpack文件添加到/b/,以library的形式在外部构建b并将其作为external的添加到a:

 externals: {
   b: "b"
 }