如何将 Typescript 类型检查步骤包含到“build.sh”脚本文件中?
How to include a Typescript type check step into a `build.sh` script file?
我想在我的构建过程中加入类型检查。
我将我的构建过程保存在一个 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
。
您可以看到 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
中查找以查看应应用哪些编译器选项以及必须编译哪些文件夹。
但是你也可以指定folder/file,比如:
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
我想在我的构建过程中加入类型检查。
我将我的构建过程保存在一个 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
。
您可以看到 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
中查找以查看应应用哪些编译器选项以及必须编译哪些文件夹。
但是你也可以指定folder/file,比如:
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