微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将 Typescript 类型检查步骤包含到 `build.sh` 脚本文件中?

如何解决如何将 Typescript 类型检查步骤包含到 `build.sh` 脚本文件中?

我想在我的构建过程中加入类型检查。

我将构建过程保存在 build.sh 文件中,其中调用多个 CLI 如下:

// TYPE CHECK HERE <---
rimraf dist
webpack...
babel...

我想输入检查我的 /src 文件夹并在发现任何类型错误时停止我的构建过程。

我该怎么做?我应该使用tsc吗?如果发现任何错误,我是否需要添加任何选项以使其停止?

我正在尝试实现这个基本功能示例:

test.sh

tsc src/testScript.ts --noEmit --skipLibCheck
echo "AFTER TSC"

我有意将此错误添加testScript.ts

enter image description here

您可以看到 test.sh 脚本的其余部分一直在运行。有没有办法检查 tsc 调用是否发现任何错误?然后我可以检查结果并在那时停止脚本。

解决方法

这是我如何实现的:

build.sh

TYPE_ERRORS="$(tsc --project ./tsconfig.json)"

if [[ -n $TYPE_ERRORS ]]; then
  echo "FOUND ERRORS"
  echo $TYPE_ERRORS
  echo "WILL EXIT NOW"
  exit
fi

echo "NO ERRORS WERE FOUND"

tsc 的结果将存储在 $TYPE_ERRORS 中。如果结果不为空,它将记录错误并退出脚本。否则,脚本将继续并记录 NO ERRORS WERE FOUND

注意:除了通过执行 echo $TYPE_ERRORS 来记录错误之外,您还可以再次调用 tsc 命令,因为日志会更漂亮(带有颜色)。喜欢:

build.sh

TYPE_ERRORS="$(tsc --project ./tsconfig.json)"

if [[ -n $TYPE_ERRORS ]]; then
  echo "FOUND ERRORS"
  tsc --project ./tsconfig.json   # THIS WILL LOG PRETTIER LOGS
  echo "WILL EXIT NOW"
  exit
fi

echo "NO ERRORS WERE FOUND"

来自 echo $TYPE_ERRORS 的日志将仅为纯文本(无颜色)。


上面的代码将在 tsconfig.json 中查看应该应用哪些编译器选项以及必须编译哪些文件夹。

但您也可以指定文件夹/文件,例如:

tsc src/someFile.ts --noEmit --someOtherOption

这就是我从 npm 脚本中调用 .sh 文件的方式:

package.json

{
  "scripts": {
    "build: "./my-bash-scripts-folder/build.sh"
  }
}

我像往常一样以 npm run build 运行它。


更新:使用退出代码

您可以使用 tsc 脚本中的 exit code 来了解它是否引发了任何错误。

成功运行的标准是 0

tsc --project ./tsconfig.json
TYPE_CHECK_EXIT_CODE=$?

if [[ $TYPE_CHECK_EXIT_CODE == "0" ]]; then
  echo "TYPE CHECK - SUCCESS"
else
  echo "TYPE CHECK - FAILED"
fi

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。