有什么办法可以将多个软件包“ tsc -w”放入自己的“ dist”文件夹中?

时间:2019-01-17 15:03:53

标签: typescript

问题

我正在使用lerna软件包布局:

packages
    groupA
        packageA
        packageB
    groupB
        packageC
        packageD
    packageE
    packageF

每个程序包都包含一个src和一个dist文件夹。

我正在寻找最好的命令,以使每个程序包都编译到其各自的dist目录中。

理想的解决方案

按照偏好,我要寻找的是:

  1. 位于根目录下的单个tsconfig.json文件和用于监视(和编译)其各自dist文件夹中所有内容的命令。
  2. 每个软件包的tsconfig.json文件,指定outDirsrcDir文件夹,以及用于监视(和编译)其各自dist文件夹中所有内容的命令。
  3. li>

到目前为止我的解决方法

我不知道有什么特定的打字稿方式可以解决这个问题,所以我现在使用bash的方式:

function dev_packages () {
  dir=`pwd`

  # list all folders in `/packages`
  find ./packages -type d | while read d; do
    # exclude `.../node_modules` folders
    dirname=$dir/$d
    if [[ $dirname != *"node_modules"* ]]; then
      # if contains a `tsconfig.json` 
      if [ -f "$dirname/tsconfig.json" ]; then
        echo '\n'$fg[yellow]'watching '$dirname'...'$reset_color
        cd $dirname && tsc -w
      fi
    fi
  done
}

dev_packages

1 个答案:

答案 0 :(得分:0)

您可以在项目根目录中拥有主tsconfig.json,并在软件包目录中将tsconfig.json文件分隔为以下内容:

{
  "extends": "../../tsconfig.json",
  "compilerOptions": {
    "outDir": "dist",
  },
  "include": ["src"]
}