【发布时间】:2021-03-07 05:53:14
【问题描述】:
对于 react r,有 create-react-app ,它记录了项目设置中的最佳实践。
节点中缺少某些内容。如果我想在 node.js 上开发和部署一个打字稿应用程序,我至少需要 3 个“目标”:
- 开始运行应用的开发版本
- test 执行单元测试(例如 jest)
- build 将 typescript 编译为节点可以理解的内容 - 用于部署。
对于所有这些功能,有 ts-jest ts-node 和 tsc 等工具。
这一切都有些奏效,但我得到了各种各样的小问题。目前package.json 中的scripts 部分如下所示:
"scripts": {
"build": "tsc -p src",
"start": "yarn run nodemon -e js,json,graphqls,ts,yaml --signal SIGHUP -x ts-node src/index.js",
"test": "rm -Rf dist/ ; yarn run ts-jest --testPathIgnorePatterns=tests/",
},
但这有各种各样的问题。 tsc 使用 src/tsconfig.json。另外两个使用./tsconfig.json。否则,输出将在./dist/src/ 中,并且目录深度的差异会混淆对非源文件的相对文件访问。
ts-node 和 tsc 似乎报告了不同的错误。例如,tsc 似乎可以处理意外共存的 js 和 ts 文件,而 ts-node 会因不透明的emit error 而崩溃。 ./dist 的内容混淆了其他工具 - 你从 ./dist 加载和执行文件,而不是从 ./src。
那么我如何设置一个重新加载的开发服务器 (yarn start)、一个测试运行器 (yarn test) 和一个生产编译 (yarn build) 都使用相同的配置文件,在相同的目录深度和行为都一样吗?
【问题讨论】:
-
问题不够具体。如果您询问一般的最佳实践,那是一个题外话。如果您要询问具体问题,请专注于它。 嵌套太深,无法使用相对路径 - 嵌套问题并不明显。 但这有各种各样的问题。 tsc 使用 src/tsconfig.json - 目前还不清楚问题是什么。如果您需要多个配置,请使用 tsconfig 继承。 FWIW 将 tsconfig 放到 src 不是一个好习惯。这不是源文件。
-
感谢配置和代码分离的提示。我试图澄清这个问题。
-
看来问题仅在于 TS 配置不正确,而不是一般设置。至少对于应用程序和测试来说,可以并且很可能应该有几个扩展一个通用配置的配置。您可能缺少的部分是
rootDir、exclude和include。 -
看看this 解决方案。我是作者
标签: node.js typescript testing build jestjs